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)