@@ -329,36 +329,40 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
329
329
if (i == 1 ) return MarkAsReadWidget (narrow: widget.narrow);
330
330
331
331
final data = model! .items[length - 1 - (i - 2 )];
332
- switch (data) {
333
- case MessageListHistoryStartItem ():
334
- return const Center (
335
- child: Padding (
336
- padding: EdgeInsets .symmetric (vertical: 16.0 ),
337
- child: Text ("No earlier messages." ))); // TODO use an icon
338
- case MessageListLoadingItem ():
339
- return const Center (
340
- child: Padding (
341
- padding: EdgeInsets .symmetric (vertical: 16.0 ),
342
- child: CircularProgressIndicator ())); // TODO perhaps a different indicator
343
- case MessageListRecipientHeaderItem ():
344
- final header = RecipientHeader (message: data.message, narrow: widget.narrow);
345
- return StickyHeaderItem (allowOverflow: true ,
346
- header: header, child: header);
347
- case MessageListDateSeparatorItem ():
348
- final header = RecipientHeader (message: data.message, narrow: widget.narrow);
349
- return StickyHeaderItem (allowOverflow: true ,
350
- header: header,
351
- child: DateSeparator (message: data.message));
352
- case MessageListMessageItem ():
353
- final header = RecipientHeader (message: data.message, narrow: widget.narrow);
354
- return MessageItem (
355
- key: ValueKey (data.message.id),
356
- header: header,
357
- trailingWhitespace: i == 1 ? 8 : 11 ,
358
- item: data);
359
- }
332
+ return _buildItem (data, i);
360
333
});
361
334
}
335
+
336
+ Widget _buildItem (MessageListItem data, int i) {
337
+ switch (data) {
338
+ case MessageListHistoryStartItem ():
339
+ return const Center (
340
+ child: Padding (
341
+ padding: EdgeInsets .symmetric (vertical: 16.0 ),
342
+ child: Text ("No earlier messages." ))); // TODO use an icon
343
+ case MessageListLoadingItem ():
344
+ return const Center (
345
+ child: Padding (
346
+ padding: EdgeInsets .symmetric (vertical: 16.0 ),
347
+ child: CircularProgressIndicator ())); // TODO perhaps a different indicator
348
+ case MessageListRecipientHeaderItem ():
349
+ final header = RecipientHeader (message: data.message, narrow: widget.narrow);
350
+ return StickyHeaderItem (allowOverflow: true ,
351
+ header: header, child: header);
352
+ case MessageListDateSeparatorItem ():
353
+ final header = RecipientHeader (message: data.message, narrow: widget.narrow);
354
+ return StickyHeaderItem (allowOverflow: true ,
355
+ header: header,
356
+ child: DateSeparator (message: data.message));
357
+ case MessageListMessageItem ():
358
+ final header = RecipientHeader (message: data.message, narrow: widget.narrow);
359
+ return MessageItem (
360
+ key: ValueKey (data.message.id),
361
+ header: header,
362
+ trailingWhitespace: i == 1 ? 8 : 11 ,
363
+ item: data);
364
+ }
365
+ }
362
366
}
363
367
364
368
class ScrollToBottomButton extends StatelessWidget {
0 commit comments