首页 > 解决方案 > Flutter Firestore 如何实现像 facebook/linkedin 这样的通知面板?

问题描述

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

在此处输入图像描述

我如何实时跟踪文档更新,例如添加到帖子的新评论、从待处理到接受的状态更新等..?

有没有可用的firestore功能?

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

标签: fluttergoogle-cloud-firestorenotificationsandroid-notifications

解决方案


您可以使用 Collection/Document-Reference 的 snapshots()-function。该函数返回一个流,可以侦听您的集合或文档中的相关更新。以下示例来自 Cloud Firestore 的官方文档,用于 Flutter:


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(),
        );
      },
    );
  }
}
    

        

推荐阅读