From cb4ed36c246baa2ffb67bd2b9e02fd09ed51c13b Mon Sep 17 00:00:00 2001 From: Gordon Hayes Date: Tue, 19 Oct 2021 18:17:19 +0200 Subject: [PATCH] fix: use didUpdateWidget to scroll to new initial index --- .../lib/src/message_list_view.dart | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index 681a3252..23585589 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -353,6 +353,20 @@ class _MessageListViewState extends State { MessageListController get _messageListController => widget.messageListController ?? _defaultController; + @override + void didUpdateWidget(MessageListView oldWidget) { + super.didUpdateWidget(oldWidget); + if (widget.initialScrollIndex != oldWidget.initialScrollIndex || + widget.initialAlignment != oldWidget.initialAlignment) { + initialIndex = _initialIndex; + initialAlignment = _initialAlignment; + _scrollController?.jumpTo( + index: initialIndex, + alignment: initialAlignment, + ); + } + } + @override Widget build(BuildContext context) => MessageListCore( paginationLimit: widget.paginationLimit, @@ -472,9 +486,6 @@ class _MessageListViewState extends State { _inBetweenList = true; }, child: ScrollablePositionedList.separated( - key: _upToDate - ? null - : ValueKey(initialIndex + initialAlignment), itemPositionsListener: _itemPositionListener, initialScrollIndex: initialIndex, initialAlignment: initialAlignment,