From b9866a709aa326755909ad0a80729b85f9782118 Mon Sep 17 00:00:00 2001 From: Gordon Hayes Date: Wed, 6 Oct 2021 15:35:22 +0200 Subject: [PATCH] feat: add messagesIndex to keep track of list indexes --- .../lib/src/message_list_view.dart | 12 +++++++++--- 1 file changed, 9 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 56e3d48d..b6ea7ff1 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -336,6 +336,8 @@ class _MessageListViewState extends State { List messages = []; + Map messagesIndex = {}; + bool initialMessageHighlightComplete = false; bool _inBetweenList = false; @@ -379,6 +381,9 @@ class _MessageListViewState extends State { Widget _buildListView(List data) { messages = data; + for (var index = 0; index < messages.length; index++) { + messagesIndex[messages[index].id] = index; + } final newMessagesListLength = messages.length; if (_messageListLength != null) { @@ -471,9 +476,10 @@ class _MessageListViewState extends State { itemCount: messages.length, findChildIndexCallback: (Key key) { final indexedKey = key as IndexedKey; - final index = messages.indexWhere( - (element) => element.id == indexedKey.value); - return ((index + 2) * 2) - 1; + final index = messagesIndex[indexedKey.value]; + if (index != null) { + return ((index + 2) * 2) - 1; + } }, // Item Count -> 8 (1 parent, 2 header+footer, 2 top+bottom, 3 messages)