@@ -569,7 +569,6 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
569
569
570
570
Widget _buildListView (BuildContext context) {
571
571
const centerSliverKey = ValueKey ('center sliver' );
572
- final zulipLocalizations = ZulipLocalizations .of (context);
573
572
574
573
// The list has two slivers: a top sliver growing upward,
575
574
// and a bottom sliver growing downward.
@@ -611,7 +610,7 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
611
610
(context, childIndex) {
612
611
final itemIndex = totalItems - 1 - (childIndex + bottomItems);
613
612
final data = model.items[itemIndex];
614
- final item = _buildItem (zulipLocalizations, data);
613
+ final item = _buildItem (data);
615
614
return item;
616
615
}));
617
616
@@ -657,7 +656,7 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
657
656
658
657
final itemIndex = topItems + childIndex;
659
658
final data = model.items[itemIndex];
660
- return _buildItem (zulipLocalizations, data);
659
+ return _buildItem (data);
661
660
}));
662
661
663
662
if (! ComposeBox .hasComposeBox (widget.narrow)) {
@@ -689,18 +688,12 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
689
688
]);
690
689
}
691
690
692
- Widget _buildItem (ZulipLocalizations zulipLocalizations, MessageListItem data) {
691
+ Widget _buildItem (MessageListItem data) {
693
692
switch (data) {
694
693
case MessageListHistoryStartItem ():
695
- return Center (
696
- child: Padding (
697
- padding: const EdgeInsets .symmetric (vertical: 16.0 ),
698
- child: Text (zulipLocalizations.noEarlierMessages))); // TODO use an icon
694
+ return const _MessageListHistoryStart ();
699
695
case MessageListLoadingItem ():
700
- return const Center (
701
- child: Padding (
702
- padding: EdgeInsets .symmetric (vertical: 16.0 ),
703
- child: CircularProgressIndicator ())); // TODO perhaps a different indicator
696
+ return const _MessageListLoadingMore ();
704
697
case MessageListRecipientHeaderItem ():
705
698
final header = RecipientHeader (message: data.message, narrow: widget.narrow);
706
699
return StickyHeaderItem (allowOverflow: true ,
@@ -721,6 +714,31 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
721
714
}
722
715
}
723
716
717
+ class _MessageListHistoryStart extends StatelessWidget {
718
+ const _MessageListHistoryStart ();
719
+
720
+ @override
721
+ Widget build (BuildContext context) {
722
+ final zulipLocalizations = ZulipLocalizations .of (context);
723
+ return Center (
724
+ child: Padding (
725
+ padding: const EdgeInsets .symmetric (vertical: 16.0 ),
726
+ child: Text (zulipLocalizations.noEarlierMessages))); // TODO use an icon
727
+ }
728
+ }
729
+
730
+ class _MessageListLoadingMore extends StatelessWidget {
731
+ const _MessageListLoadingMore ();
732
+
733
+ @override
734
+ Widget build (BuildContext context) {
735
+ return const Center (
736
+ child: Padding (
737
+ padding: EdgeInsets .symmetric (vertical: 16.0 ),
738
+ child: CircularProgressIndicator ())); // TODO perhaps a different indicator
739
+ }
740
+ }
741
+
724
742
class ScrollToBottomButton extends StatelessWidget {
725
743
const ScrollToBottomButton ({super .key, required this .scrollController, required this .visible});
726
744
0 commit comments