我只想在集合中有任何更改的情况下听内容。但是当我尝试StreamSubscription
时,所有内容都在第一次加载。
如何在第一次避免满载?
static StreamSubscription<dynamic> listenMessageChange(Function contentChange) {
return Firestore.instance
.collection('contents')
.snapshots()
.listen((data) {
List<Message> changedContents = [];
data.documentChanges.forEach((change) {
changedContents.add(Content.createFromMap(change.document.data));
});
contentChange(changedContents);
}, cancelOnError: false);
}
[监听实时更新时,第一次会检索所有数据。避免完全加载内容的唯一方法是使用方法limit()
,这样您就不会在第一次加载时获得所有内容。之后,您可以检查更改/添加/删除了哪个文档:
Firestore.instance
.collection('contents')
.snapshots()
.listen((data) {
data.documentChanges.forEach((res) {
if (res.type == DocumentChangeType.added) {
print("added");
print(res.document.data);
} else if (res.type == DocumentChangeType.modified) {
print("modified");
print(res.document.data);
} else if (res.type == DocumentChangeType.removed) {
print("removed");
print(res.document.data);
}
});