flutter - Flutter Firestore 如何实现像 facebook/linkedin 这样的通知面板?
问题描述
希望创建一个显示所有用户交互事件的通知页面,如下所示
我如何实时跟踪文档更新,例如添加到帖子的新评论、从待处理到接受的状态更新等..?
有没有可用的firestore功能?
如果唯一的解决方案是读取更新的文档,然后比较更改 VS 缓存数据,我怎样才能实现“实时跟踪”?由于更新是由另一个用户发起的,如何在通知接收方不采取任何动作的情况下触发“文档更新检查”?此外,这听起来像是一种昂贵的方式,因为应用程序需要进行大量的读取、写入操作......
解决方案
您可以使用 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(),
);
},
);
}
}
推荐阅读
- c - getc() 和 getchar() 是定义明确的函数吗?
- rest - Keycloak API,通过 id 列表获取用户的最佳方式
- excel - 根据最新版本打开文件并计算行数
- c - “return (int, int);”是什么意思?用c语言?
- python - 读取其他 .py 的程序
- php - 通过添加 url 标头强制源 url 自动下载
- sql-server - 如何使用混合连接将数据从 SQL Server 转储到 MS Access 表中
- excel - SUM.PRODUCT - 如何获取与单个单元格值对应的值数组
- html - 按钮底部的空白?
- python - 为什么 for 循环遍历 sqlalchemy.orm.collections.CollectionAdapter 非常慢 SQLAlchemy 1.1.18?