Прочитав 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, также довольно легко просматривать файлы в нем.