diff --git a/lib/src/message_list_view.dart b/lib/src/message_list_view.dart index f9e40bf7..803ce456 100644 --- a/lib/src/message_list_view.dart +++ b/lib/src/message_list_view.dart @@ -164,6 +164,7 @@ class _MessageListViewState extends State { Function _onThreadTap; bool _showScrollToBottom = false; ItemPositionsListener _itemPositionListener; + int messageListLength; @override Widget build(BuildContext context) { @@ -203,6 +204,22 @@ class _MessageListViewState extends State { ); } + final newMessagesListLength = messages.length; + + if (_itemPositionListener.itemPositions.value?.isNotEmpty == true && + messageListLength != null) { + final first = _itemPositionListener.itemPositions.value.first; + final diff = newMessagesListLength - messageListLength; + if (diff > 0) { + _scrollController.jumpTo( + index: first.index + diff, + alignment: first.itemLeadingEdge, + ); + } + } + + messageListLength = newMessagesListLength; + return Stack( alignment: Alignment.center, children: [