Как прослушать изменения документа в Cloud Firestore, используя Flutter? - PullRequest
0 голосов
/ 22 мая 2018

Я хотел бы иметь метод прослушивателя, который проверяет изменения в коллекции документов, если изменения происходят.

Что-то вроде:

import 'package:cloud_firestore/cloud_firestore.dart';


  Future<Null> checkFocChanges() async {
    Firestore.instance.runTransaction((Transaction tx) async {
      CollectionReference reference = Firestore.instance.collection('planets');
      reference.onSnapshot.listen((querySnapshot) {
        querySnapshot.docChanges.forEach((change) {
          // Do something with change
        });
      });
    });
  }

Ошибка здесь в том, что onSnapshotне определено на CollectionReference.

Есть идеи?

1 Ответ

0 голосов
/ 22 мая 2018

Прочитав cloud_firestore документацию , вы можете увидеть, что Stream из Query можно получить через snapshots().

Чтобы вы поняли, яизменит ваш код чуть-чуть:

CollectionReference reference = Firestore.instance.collection('planets');
reference.snapshots().listen((querySnapshot) {
  querySnapshot.documentChanges.forEach((change) {
    // Do something with change
  });
});

Вы также не должны запускать это в транзакции. Флаттер использует для этого StreamBuilder, прямо со страницы cloud_firestore Дарт :

StreamBuilder<QuerySnapshot>(
  stream: Firestore.instance.collection('books').snapshots(),
  builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
    if (!snapshot.hasData) return new Text('Loading...');
    return new ListView(
      children: snapshot.data.documents.map((DocumentSnapshot document) {
        return new ListTile(
          title: new Text(document['title']),
          subtitle: new Text(document['author']),
        );
      }).toList(),
    );
  },
);

Если вы хотите узнать больше, вы можете взглянуть на источник , он хорошо документирован, и он не требует пояснений.

Также обратите внимание, что я изменил docChanges до documentChanges.Вы можете видеть это в файле query_snapshot .Если вы используете IDE, такую ​​как IntelliJ или Android Studio, также довольно легко просматривать файлы в нем.

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