【发布时间】:2020-06-15 12:45:22
【问题描述】:
我一直在尝试让 Firebase 实时工作,但我遇到了一些问题。我想要实现的是能够判断何时将新文档添加到集合中,仅此而已。似乎正在发生的是我的代码总是返回集合中的所有文档。
下面是我的代码:
listenNewPost(int categoryId, Users user, Function(DocumentSnapshot) onData) async {
var ref = this._firestore.collection('posts').reference();
var query = ref.orderBy('created_at', descending: true);
var _query = ref.where('category', isEqualTo: categoryId).orderBy('created_at', descending: true);
if (categoryId == 1) {
query.snapshots().listen((snapshot) {
snapshot.documentChanges.forEach((doc) {
if (doc.type == DocumentChangeType.added) {
print('receieved: ' + doc.document.data.toString());
onData(doc.document);
}
});
});
}
else {
_query.snapshots().listen((snapshot) {
snapshot.documentChanges.forEach((doc) {
if (doc.type == DocumentChangeType.added) {
print('_receieved: ' + doc.document.data.toString());
onData(doc.document);
}
});
});
}
}
我有另一个获取所有帖子的代码,我想在当前屏幕中使用它来获取所有新帖子,因此我不必使用计时器来刷新屏幕。我有一个在上述代码之前运行的getAllPosts 方法。 getAllPosts 成功获取所有帖子,并且侦听器代码也获取所有帖子,而不是在添加新帖子时等待。以下是我如何调用代码:
因为我在使用 Flutter,所以这是我的代码:
void initState() {
super.initState();
this.allPosts = [];
SOmeClass.listenNewPost();
this.getAllPosts();
}
请问我做错了什么? 谢谢。
【问题讨论】:
标签: firebase flutter google-cloud-firestore