firebase - Flutter 使用提供者监听一个文档更改
问题描述
我已经看到了监听文档更改的示例streambuilder
,但是可以在提供程序中使用它吗?我想听听userinfo
集合中文档的变化。
这是我的代码:
在databaseservice.dart
Stream <DocumentSnapshot> get info{
return userinfo.doc(uid).snapshots();
}
在主要
return MultiProvider(
providers: [
StreamProvider<DocumentSnapshot>.value(
value: DatabaseService().info
), // other providers
在我需要查看更改的包装器中:
final info = Provider.of<DocumentSnapshot>(context).data();
但是,我首先会得到错误:
The method 'data' was called on null.
Receiver: null
Tried calling: data()
后来,信息变量给了我 null 而不是地图。
我想让用户在他们第一次注册后输入他们的姓名和年龄,而不是在他们登录时。所以我的想法是当用户注册时,集合中会有一个新文档“userinfo”,它设置他们的年龄和名字一样null
。
然后包装器检查名称是否为null
. 如果null
,它将转到收集信息页面。如果它有值,它将转到主页。
谁能告诉我我的文档快照在哪里做错了,或者有更好的想法来实现这个?
解决方案
推荐阅读
- javascript - 使用 Socket.IO 同步 Express Session
- java - 使用 JAX-RPC 的肥皂服务,但它没有在 pom.xml 中定义
- python - 如何模拟返回类实例的属性变量
- javascript - 如何在 SharePoint SPFx 中将 Tableau Javascript 添加到 Typescript
- html - HTML/CSS 导航栏对齐和背景颜色不起作用
- javascript - iframe:如何显示原始(纯文本)html?
- sql - 不使用 x update 语句(如果可能)更新同一列的最佳方法?
- css - 如何在 mui reactjs 的抽屉外显示头像图像?
- forms - 如何在允许编辑 = 否的情况下粘贴到数据表表单中?
- javascript - 如何使用 JSFiddle 并分配字符串