簡體   English   中英

關於 Firestore 更改的顫振本地通知

[英]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相比發生哪些變化的元數據。

要訪問此元數據,請使用QuerySnapshotdocChanges屬性,而不是docs ,並檢查每個更改的type屬性的DocumentChangeType以僅查找添加的文檔。 在初始快照中,將是所有文檔,因為此時所有文檔都是新的快照。

請參閱有關查看快照之間的更改的 Firebase 文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM