【问题标题】:Get user name from a document in Firestore flutter从 Firestore Flutter 中的文档中获取用户名
【发布时间】:2020-10-29 22:23:08
【问题描述】:

我需要在个人资料页面上显示用户名。我尝试了多种方法,但每次都显示错误。

这是我到目前为止所做的:

  Widget userProfile(BuildContext context) {
Stream<DocumentSnapshot> provideDocumentUserName() {
  return Firestore.instance.collection('user').document('name').snapshots();
}

return Container(
    child: StreamBuilder<DocumentSnapshot>(
        stream: provideDocumentUserName(),
        builder: (BuildContext context,
            AsyncSnapshot<DocumentSnapshot> snapshot) {
          if (snapshot.hasError) {
            return CircularProgressIndicator();
          } else {
            Map<String, dynamic> documentFields = snapshot.data.data;
            return Text(documentFields["name"]);
          }
        }));

我得到的错误是:

在 null 上调用了 getter 'data'。接收者:null 尝试调用: 数据

还有:

引发了另一个异常:NoSuchMethodError: The method '[]' was called on null.

我已经为此工作了好几个小时。

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    看起来 snapshot.data 为空,这就是您可能会看到此错误的原因。您可能需要检查连接状态。一种解决方法如下:

      switch (snapshot.connectionState) {
        case ConnectionState.done:
          if (snapshot.hasError)
            return Text('Error: ${snapshot.error}');
          Map<String, dynamic> documentFields = snapshot.data;
          return Text(documentFields["name"]);
      }
      return CircularProgressIndicator(); // unreachable
    

    感谢@cipli-onat 发帖here

    【讨论】:

      【解决方案2】:

      你应该得到 documentFields 如下:

      Map<String, dynamic> documentFields = snapshot.data.data();
      

      【讨论】:

      • 它说“表达式不计算为函数,所以它不能被调用。”
      猜你喜欢
      • 1970-01-01
      • 2020-12-05
      • 2021-07-31
      • 2021-07-20
      • 2021-08-04
      • 2022-07-22
      • 2021-12-16
      • 2021-07-29
      • 2022-01-20
      相关资源
      最近更新 更多