From b3542ffb78004a6e34be2b95fae6ccf9805b57b7 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 19 Aug 2021 11:34:22 +0200 Subject: [PATCH] fix(ui): open `MessageListView` at a specific message --- .../lib/src/message_list_view.dart | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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 75d45707..0feecf83 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -5,6 +5,7 @@ import 'package:collection/collection.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/scheduler.dart'; import 'package:jiffy/jiffy.dart'; import 'package:rxdart/rxdart.dart'; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; @@ -454,7 +455,11 @@ class _MessageListViewState extends State { _inBetweenList = true; }, child: ScrollablePositionedList.separated( - key: ValueKey(initialIndex! + initialAlignment!), + key: (_upToDate || + initialIndex == null || + initialAlignment == null) + ? null + : ValueKey(initialIndex! + initialAlignment!), itemPositionsListener: _itemPositionListener, initialScrollIndex: initialIndex ?? 0, initialAlignment: initialAlignment ?? 0, @@ -1194,6 +1199,15 @@ class _MessageListViewState extends State { initialIndex = _initialIndex; initialAlignment = _initialAlignment; + WidgetsBinding.instance!.addPostFrameCallback((timeStamp) { + if (initialIndex != null) { + _scrollController?.jumpTo( + index: initialIndex!, + alignment: initialAlignment ?? 0, + ); + } + }); + _messageNewListener = streamChannel!.channel.on(EventType.messageNew).listen((event) { if (_upToDate) {