@@ -1073,7 +1073,7 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
1073
1073
1074
1074
final itemIndex = totalItems - 1 - (childIndex + bottomItems);
1075
1075
final data = model.items[itemIndex];
1076
- final item = _buildItem (data);
1076
+ final item = _buildItem (data, isLastInFeed : itemIndex == totalItems - 1 );
1077
1077
return item;
1078
1078
}));
1079
1079
@@ -1113,7 +1113,7 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
1113
1113
1114
1114
final itemIndex = topItems + childIndex;
1115
1115
final data = model.items[itemIndex];
1116
- return _buildItem (data);
1116
+ return _buildItem (data, isLastInFeed : itemIndex == totalItems - 1 );
1117
1117
}));
1118
1118
1119
1119
if (! ComposeBox .hasComposeBox (widget.narrow)) {
@@ -1178,7 +1178,7 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
1178
1178
}
1179
1179
}
1180
1180
1181
- Widget _buildItem (MessageListItem data) {
1181
+ Widget _buildItem (MessageListItem data, { required bool isLastInFeed} ) {
1182
1182
switch (data) {
1183
1183
case MessageListRecipientHeaderItem ():
1184
1184
final header = RecipientHeader (message: data.message, narrow: widget.narrow);
@@ -1195,12 +1195,14 @@ class _MessageListState extends State<MessageList> with PerAccountStoreAwareStat
1195
1195
key: ValueKey (data.message.id),
1196
1196
narrow: widget.narrow,
1197
1197
header: header,
1198
+ isLastInFeed: isLastInFeed,
1198
1199
item: data);
1199
1200
case MessageListOutboxMessageItem ():
1200
1201
final header = RecipientHeader (message: data.message, narrow: widget.narrow);
1201
1202
return MessageItem (
1202
1203
narrow: widget.narrow,
1203
1204
header: header,
1205
+ isLastInFeed: isLastInFeed,
1204
1206
item: data);
1205
1207
}
1206
1208
}
@@ -1527,11 +1529,13 @@ class MessageItem extends StatelessWidget {
1527
1529
required this .narrow,
1528
1530
required this .item,
1529
1531
required this .header,
1532
+ required this .isLastInFeed,
1530
1533
});
1531
1534
1532
1535
final Narrow narrow;
1533
1536
final MessageListMessageBaseItem item;
1534
1537
final Widget header;
1538
+ final bool isLastInFeed;
1535
1539
1536
1540
@override
1537
1541
Widget build (BuildContext context) {
@@ -1547,9 +1551,11 @@ class MessageItem extends StatelessWidget {
1547
1551
item: item),
1548
1552
MessageListOutboxMessageItem () => OutboxMessageWithPossibleSender (item: item),
1549
1553
},
1550
- // TODO refine this padding; discussion:
1551
- // https://github.com/zulip/zulip-flutter/pull/1453#discussion_r2106526985
1552
- if (item.isLastInBlock) const SizedBox (height: 11 ),
1554
+ // TODO write tests for this padding logic
1555
+ if (isLastInFeed)
1556
+ const SizedBox (height: 5 )
1557
+ else if (item.isLastInBlock)
1558
+ const SizedBox (height: 11 ),
1553
1559
]));
1554
1560
if (item case MessageListMessageItem (: final message)) {
1555
1561
child = _UnreadMarker (
0 commit comments