Flutter / Dart / Firestore - группирует документы по дням в AnimtedList - PullRequest
0 голосов
/ 12 мая 2019

Как я могу группировать сообщения между пользователями по дням?Пока что он просто добавляет в список и сортирует его по дням, но я не могу добавить разрыв между сообщениями, которые были отправлены в прошлые дни.Список отображается в виде 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...