Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter FlatterFireStore如何实现facebook/linkedin这样的通知面板?_Flutter_Google Cloud Firestore_Notifications_Android Notifications - Fatal编程技术网

Flutter FlatterFireStore如何实现facebook/linkedin这样的通知面板?

Flutter FlatterFireStore如何实现facebook/linkedin这样的通知面板?,flutter,google-cloud-firestore,notifications,android-notifications,Flutter,Google Cloud Firestore,Notifications,Android Notifications,希望创建一个通知页面,显示用户交互的所有事件,如下所示 如何实时跟踪文档更新,例如,添加到帖子的新评论、从挂起状态更新到接受状态等 是否有可用的firestore功能 如果唯一的解决方案是读取更新的文档,然后将更改与缓存数据进行比较,那么如何实现“实时跟踪”?由于更新是由另一个用户发起的,如何在通知接收方不采取任何行动的情况下触发“文档更新检查”?此外,这听起来像是一种昂贵的方式,因为应用程序需要执行大量的读写操作……您可以使用集合/文档引用的snapshots()函数。 该函数返回一个流,可

希望创建一个通知页面,显示用户交互的所有事件,如下所示

如何实时跟踪文档更新,例如,添加到帖子的新评论、从挂起状态更新到接受状态等

是否有可用的firestore功能

如果唯一的解决方案是读取更新的文档,然后将更改与缓存数据进行比较,那么如何实现“实时跟踪”?由于更新是由另一个用户发起的,如何在通知接收方不采取任何行动的情况下触发“文档更新检查”?此外,这听起来像是一种昂贵的方式,因为应用程序需要执行大量的读写操作……

您可以使用集合/文档引用的snapshots()函数。 该函数返回一个流,可在集合或文档中侦听相关更新。 下面的示例来自Flatter的firestore云:


类用户信息扩展无状态小部件{
@凌驾
小部件构建(构建上下文){
CollectionReference users=FirebaseFirestore.instance.collection('users');
返回流生成器(
流:users.snapshots(),
生成器:(BuildContext上下文,异步快照){
if(snapshot.hasError){
返回文本(“出错”);
}
if(snapshot.connectionState==connectionState.waiting){
返回文本(“加载”);
}
返回新的ListView(
子项:snapshot.data.docs.map((DocumentSnapshot文档){
返回新的ListTile(
标题:新文本(document.data()['full_name']),
字幕:新文本(document.data()['company']),
);
}).toList(),
);
},
);
}
}

这并没有回答问题,很抱歉听到这个消息-您可以使用QuerySnapshot的docChanges属性。类似于:CollectionReference users=FirebaseFirestore.instance.collection('users');users.snapshot().listen((QuerySnapshot event){event.docChanges.forEach((change){//Do something with change});希望这有帮助,否则如果您能解释为什么这对您不起作用,我会很高兴:)如果添加了新文档怎么办?docChanges可以跟踪新文档吗?
class UserInformation extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    CollectionReference users = FirebaseFirestore.instance.collection('users');
    return StreamBuilder<QuerySnapshot>(
      stream: users.snapshots(),
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.hasError) {
          return Text('Something went wrong');
        }

        if (snapshot.connectionState == ConnectionState.waiting) {
          return Text("Loading");
        }

        return new ListView(
          children: snapshot.data.docs.map((DocumentSnapshot document) {
            return new ListTile(
              title: new Text(document.data()['full_name']),
              subtitle: new Text(document.data()['company']),
            );
          }).toList(),
        );
      },
    );
  }
}