我想有一个侦听器方法,如果发生更改,将检查文档集合的更改。
类似的东西:
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
。
有什么想法吗?
答案 0 :(得分:10)
通过cloud_firestore
's documentation阅读,您可以看到来自Stream
的{{1}}可以通过Query
获得。
为了让您理解,我会稍微改变您的代码:
snapshots()
您也不应该在事务中运行它。执行此操作的 Flutter方式使用CollectionReference reference = Firestore.instance.collection('planets');
reference.snapshots().listen((querySnapshot) {
querySnapshot.documentChanges.forEach((change) {
// Do something with change
});
});
,直接来自cloud_firestore
Dart pub page:
StreamBuilder
如果您想了解更多信息,可以take a look at the source,有详细记录,但不能自我解释。
另请注意,我已将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
。你可以在query_snapshot
file中看到。如果您使用的是IntelliJ或Android Studio等IDE,那么点击其中的文件也非常容易。