feat: add messagesIndex to keep track of list indexes
This commit is contained in:
@@ -336,6 +336,8 @@ class _MessageListViewState extends State<MessageListView> {
|
|||||||
|
|
||||||
List<Message> messages = <Message>[];
|
List<Message> messages = <Message>[];
|
||||||
|
|
||||||
|
Map<String, int> messagesIndex = {};
|
||||||
|
|
||||||
bool initialMessageHighlightComplete = false;
|
bool initialMessageHighlightComplete = false;
|
||||||
|
|
||||||
bool _inBetweenList = false;
|
bool _inBetweenList = false;
|
||||||
@@ -379,6 +381,9 @@ class _MessageListViewState extends State<MessageListView> {
|
|||||||
|
|
||||||
Widget _buildListView(List<Message> data) {
|
Widget _buildListView(List<Message> data) {
|
||||||
messages = data;
|
messages = data;
|
||||||
|
for (var index = 0; index < messages.length; index++) {
|
||||||
|
messagesIndex[messages[index].id] = index;
|
||||||
|
}
|
||||||
final newMessagesListLength = messages.length;
|
final newMessagesListLength = messages.length;
|
||||||
|
|
||||||
if (_messageListLength != null) {
|
if (_messageListLength != null) {
|
||||||
@@ -471,9 +476,10 @@ class _MessageListViewState extends State<MessageListView> {
|
|||||||
itemCount: messages.length,
|
itemCount: messages.length,
|
||||||
findChildIndexCallback: (Key key) {
|
findChildIndexCallback: (Key key) {
|
||||||
final indexedKey = key as IndexedKey;
|
final indexedKey = key as IndexedKey;
|
||||||
final index = messages.indexWhere(
|
final index = messagesIndex[indexedKey.value];
|
||||||
(element) => element.id == indexedKey.value);
|
if (index != null) {
|
||||||
return ((index + 2) * 2) - 1;
|
return ((index + 2) * 2) - 1;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// Item Count -> 8 (1 parent, 2 header+footer, 2 top+bottom, 3 messages)
|
// Item Count -> 8 (1 parent, 2 header+footer, 2 top+bottom, 3 messages)
|
||||||
|
|||||||
Reference in New Issue
Block a user