![](/img/trans.png)
[英]Firestore: Received WebStorage notification for local change. Another client might have garbage-collected our state
[英]flutter local notification on firestore change
在我的 firestore 中,我有一個代表地圖上位置的文檔列表。
我想不僅在數據庫中創建新文檔時顯示本地通知,而且當該位置與我的當前位置相距一定距離時也顯示本地通知。
目前,我有一個 streambuilder 將位置加載到我的本地地圖中,還有一個 streamlistener 來通知新文檔:
CollectionReference loc =
FirebaseFirestore.instance.collection('locations');
late Stream<QuerySnapshot> _locStream;
late StreamSubscription<QuerySnapshot> streamSub;
@override
void initState() {
super.initState();
_locStream = loc.snapshots();
streamSub = _locStream.listen((data) {
final snackBar = SnackBar(
content:
Text('New location added!'));
ScaffoldMessenger.of(context).showSnackBar(snackBar);
});
}
問題是流正在返回所有文檔,而不僅僅是新文檔,所以我不知道如何“隔離”新文檔,更重要的是,如何獲取其值以便將其與我當前的位置進行比較.
有可能實現嗎?
Firestore QuerySnapshot
始終包含適合查詢的所有信息。 但是,當QuerySnapshot
是對現有偵聽器/流的更新時,它還包含有關與偵聽器/流上的先前QuerySnapshot
相比發生哪些變化的元數據。
要訪問此元數據,請使用QuerySnapshot
的docChanges
屬性,而不是docs
,並檢查每個更改的type
屬性的DocumentChangeType
以僅查找添加的文檔。 在初始快照中,將是所有文檔,因為此時所有文檔都是新的快照。
請參閱有關查看快照之間的更改的 Firebase 文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.