# #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
не являются нулевыми каждый раз, когда он срабатывает.
У кого-нибудь есть решение этой проблемы? Это утверждение, так что, насколько я могу судить, оно внутреннее для библиотеки.