Как я могу группировать сообщения между пользователями по дням?Пока что он просто добавляет в список и сортирует его по дням, но я не могу добавить разрыв между сообщениями, которые были отправлены в прошлые дни.Список отображается в виде AnimatedList()
Код:
List<Message> _messages = [];
...
_initMessages() { // Being called in the initState
APIs().chats.messages(
chatID: widget.chat.chatID,
onEmpty: () {
if (mounted)
setState(() {
this._isLoading = false;
});
},
onAdded: (m) {
if (mounted)
setState(() {
if (m.type == 'Image') {
m.message = NetworkImage(m.message);
}
this._messages.add(m);
this._messages.sort((a, b) => a.createdAt.compareTo(b.createdAt));
if (mounted) this._listKey.currentState.insertItem(this._messages.length, duration: Duration(milliseconds: 500));
this._isLoading = false;
});
},
onModified: (m) {
int i = this._messages.indexWhere((message) => message.messageID == m.messageID);
if (mounted)
setState(() {
this._messages[i] = m;
this._messages.sort((a, b) => a.createdAt.compareTo(b.createdAt));
this._isLoading = false;
});
},
onRemoved: (m) {
int i = this._messages.indexWhere((message) => message.messageID == m.messageID);
if (mounted)
setState(() {
this._messages.removeAt(i);
this._messages.sort((a, b) => a.createdAt.compareTo(b.createdAt));
this._isLoading = false;
});
},
onFailure: (e) {
print(e);
});
}
Он показывает сообщения по порядку, но когда я изменил его на AnimatedList
, он выдает ошибку:
[VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: 'package:flutter/src/widgets/animated_list.dart': Failed assertion: line 279 pos 12: 'itemIndex >= 0 && itemIndex <= _itemsCount': is not true.
Вроде вопрос из двух частей, сгруппируйте документы по дням и попробуйте заставить его работать в AnimatedList
.Дата имеет тип отметки времени Firestore.