Skip to content

Commit 4b69adf

Browse files
committed
msglist [nfc]: Make start/loading indicators their own widgets
1 parent a6e0efd commit 4b69adf

File tree

1 file changed

+30
-12
lines changed

1 file changed

+30
-12
lines changed

lib/widgets/message_list.dart

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,6 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
569569

570570
Widget _buildListView(BuildContext context) {
571571
const centerSliverKey = ValueKey('center sliver');
572-
final zulipLocalizations = ZulipLocalizations.of(context);
573572

574573
// The list has two slivers: a top sliver growing upward,
575574
// and a bottom sliver growing downward.
@@ -611,7 +610,7 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
611610
(context, childIndex) {
612611
final itemIndex = totalItems - 1 - (childIndex + bottomItems);
613612
final data = model.items[itemIndex];
614-
final item = _buildItem(zulipLocalizations, data);
613+
final item = _buildItem(data);
615614
return item;
616615
}));
617616

@@ -657,7 +656,7 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
657656

658657
final itemIndex = topItems + childIndex;
659658
final data = model.items[itemIndex];
660-
return _buildItem(zulipLocalizations, data);
659+
return _buildItem(data);
661660
}));
662661

663662
if (!ComposeBox.hasComposeBox(widget.narrow)) {
@@ -689,18 +688,12 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
689688
]);
690689
}
691690

692-
Widget _buildItem(ZulipLocalizations zulipLocalizations, MessageListItem data) {
691+
Widget _buildItem(MessageListItem data) {
693692
switch (data) {
694693
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();
699695
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();
704697
case MessageListRecipientHeaderItem():
705698
final header = RecipientHeader(message: data.message, narrow: widget.narrow);
706699
return StickyHeaderItem(allowOverflow: true,
@@ -721,6 +714,31 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
721714
}
722715
}
723716

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+
724742
class ScrollToBottomButton extends StatelessWidget {
725743
const ScrollToBottomButton({super.key, required this.scrollController, required this.visible});
726744

0 commit comments

Comments
 (0)