Как сделать так, чтобы поток Firestore продолжался - PullRequest
0 голосов
/ 13 мая 2019

Я не могу заставить свой поток Firestore продолжать работать после первого снимка в приложении-редукторе. При первом запуске он выдает мне данные правильно, но не слушает обновления.

Я попытался изменить способ обработки результата snapshot() и использовать обработчик ошибок или готово. Но я не мог понять причину проблемы

store_middleware.dart:

var messagesRef = Firestore.instance.collection('messages')
      .orderBy('timestamp', descending: false);

Middleware<AppState> _loadMessages() {
  return (Store<AppState> store, action, NextDispatcher next) {
    messagesStream = messagesRef.where('conversationId', isEqualTo: conversationId)
      .snapshots()
      .listen(
        (msgSnap) async{ 
          msgSnap.documentChanges.forEach((doc) {
            switch (doc.type) {
              case DocumentChangeType.added:
                store.dispatch(AddMessage(Message(
                  doc.document.documentID,
                  doc.document.data['conversationId'],
                  doc.document.data['fromUserId'],
                  doc.document.data['content'],
                  DateTime.fromMillisecondsSinceEpoch( doc.document.data['timestamp'], isUtc: true),
                )));
                break;
              case DocumentChangeType.modified:
                //update message
                break;
              case DocumentChangeType.removed:
                print('doc removed');
                //remove message
                break;
              default:
                //do nothing
                break;
            }

          });
        },
        onDone: () => print('stream finished'), //doesn't print anything
        onError: (e) => print('error: ${e.toString()}') //doesn't print anything
      );

    next(action);
  };

Как заставить его прослушивать обновления даже после первого снимка?

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