From 89f767886a5b1f919e961ccb9f79d9fe43b57db1 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 26 Oct 2021 15:34:20 +0200 Subject: [PATCH] fix(ui): fix quoted message scroll --- .../src/positioned_list.dart | 4 ++-- .../lib/src/message_list_view.dart | 17 ++++++----------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/packages/stream_chat_flutter/lib/scrollable_positioned_list/src/positioned_list.dart b/packages/stream_chat_flutter/lib/scrollable_positioned_list/src/positioned_list.dart index 7cd4cf16..c2c2a278 100644 --- a/packages/stream_chat_flutter/lib/scrollable_positioned_list/src/positioned_list.dart +++ b/packages/stream_chat_flutter/lib/scrollable_positioned_list/src/positioned_list.dart @@ -323,9 +323,9 @@ class _PositionedListState extends State { final positions = []; RenderViewport? viewport; for (final element in registeredElements.value!) { - final box = element.renderObject as RenderBox; + final box = element.renderObject as RenderBox?; viewport ??= RenderAbstractViewport.of(box) as RenderViewport?; - if (viewport == null) { + if (viewport == null || box == null) { continue; } final key = element.widget.key as IndexedKey; 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 6798c432..cdfe2de8 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -1062,8 +1062,7 @@ class _MessageListViewState extends State { showSendingIndicator: showSendingIndicator, showUserAvatar: showUserAvatar, onQuotedMessageTap: (quotedMessageId) async { - // ignore: prefer_function_declarations_over_variables - final scrollToIndex = () { + if (messages.map((e) => e.id).contains(quotedMessageId)) { final index = messages.indexWhere((m) => m.id == quotedMessageId); _scrollController?.scrollTo( index: index + 2, // +2 to account for loader and footer @@ -1071,16 +1070,12 @@ class _MessageListViewState extends State { curve: Curves.easeInOut, alignment: 0.1, ); - }; - if (messages.map((e) => e.id).contains(quotedMessageId)) { - scrollToIndex(); } else { - await streamChannel!.loadChannelAtMessage(quotedMessageId).then((_) { - WidgetsBinding.instance!.addPostFrameCallback((_) { - if (messages.map((e) => e.id).contains(quotedMessageId)) { - scrollToIndex(); - } - }); + await streamChannel! + .loadChannelAtMessage(quotedMessageId) + .then((_) async { + initialIndex = 21; // 19 + 2 | 19 is the index of the message + initialAlignment = 0.1; }); } },