首页 > 解决方案 > 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,它将转到收集信息页面。如果它有值,它将转到主页。

谁能告诉我我的文档快照在哪里做错了,或者有更好的想法来实现这个?

标签: firebaseflutterdartgoogle-cloud-firestoreflutter-provider

解决方案


推荐阅读