Ошибка утверждения Flutter FirebaseAnimatedList при нажатии в отсортированном списке

# #flutter #firebase-realtime-database

Вопрос:

У меня есть приложение flutter, использующее базу данных Firebase в реальном времени, и я использую анимированный список для отображения документов из коллекции в отсортированном списке. Всякий раз, когда я добавляю элемент в список, я получаю ошибку утверждения:

 ----------------FIREBASE CRASHLYTICS----------------
I/flutter (15125): 'package:flutter/src/widgets/animated_list.dart': Failed assertion: line 959 pos 12: 'index != null amp;amp; index >= 0': is not true.
I/flutter (15125): #0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39)
I/flutter (15125): #1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
I/flutter (15125): #2      SliverAnimatedListState.insertItem (package:flutter/src/widgets/animated_list.dart:959:12)
I/flutter (15125): #3      AnimatedListState.insertItem (package:flutter/src/widgets/animated_list.dart:484:42)
I/flutter (15125): #4      FirebaseAnimatedListState._onChildAdded (package:firebase_database/ui/firebase_animated_list.dart:175:36)
I/flutter (15125): #5      FirebaseSortedList._onChildAdded (package:firebase_database/ui/firebase_sorted_list.dart:97:18)
I/flutter (15125): #6      _rootRunUnary (dart:async/zone.dart:1436:47)
I/flutter (15125): #7      _CustomZone.runUnary (dart:async/zone.dart:1335:19)
I/flutter (15125): #8      _CustomZone.runUnaryGuarded (dart:async/zone.dart:1244:7)
I/flutter (15125): #9      _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341:11)
I/flutter (15125): #10     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7)
I/flutter (15125): #11     _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:123:11)
I/flutter (15125): #12     _MapStream._handleData (dart:a
I/flutter (15125): ----------------------------------------------------
 

У меня есть простая запись (две строки и int), которую я добавляю в список, используя следующий код:

 _recordsRef.push().set(record.toJson());
 

и мой код FirebaseAnimatedList выглядит так:

 Widget recordList() {
    final DateFormat formatter = DateFormat('yyyy-MM-dd @ hh:mm:ss');

    return FirebaseAnimatedList(
      controller: _scrollController,
      query: getRecordsQuery(),
      sort: (a, b) {
        return a.value['timestamp'].compareTo(b.value['timestamp']);
      },
      itemBuilder: (context, snapshot, animation, index) {
        final json = snapshot.value as Map<dynamic, dynamic>;
        final record = Record.fromJson(json);
        var date = DateTime.fromMicrosecondsSinceEpoch(record.timestamp * 1000);
        return ListTile(
          title: Text("Message: ${record.msg}"),
          subtitle: Text("${record.user} (${formatter.format(date)}))"),
        );
      },
    );
  }
 

Все работает нормально без метода сортировки, но я не вижу в сортировке ничего, что могло бы привести к сбою индекса, так как ничто не попадает в метод сортировки без значения для a и b . Я проверил значения в методе сортировки, и оба a , и b не являются нулевыми каждый раз, когда он срабатывает.

У кого-нибудь есть решение этой проблемы? Это утверждение, так что, насколько я могу судить, оно внутреннее для библиотеки.