繁体   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