如何在Flutter中显示来自Firestore数据的文本?

时间:2020-02-06 02:56:59

标签: firebase flutter dart google-cloud-firestore

我是Firebase / firestore的新手,想将Firestore添加到我的应用程序。我的应用程序当前具有登录名,并将UID设置为文档名称的数据添加到数据库。 Console Image 我想在我的应用程序配置文件页面中显示名称。我将如何实现?

以此命名

Center(child:building(context),),
  Widget building(BuildContext context) {
    return new StreamBuilder(
        stream: Firestore.instance
            .collection('UserData')
            .document(getUID())
            .snapshots(),
        builder: (context, snapshot) {
          if (!snapshot.hasData) {
            return new Text("Loading");
          } else {
            return new Text(snapshot.data.toString());
          }
        });
  }

当前错误 Error Image

先前的错误

Error Message

谢谢!

2 个答案:

答案 0 :(得分:1)

尝试一下

 Widget building(BuildContext context) {
    return new StreamBuilder<DocumentSnapshot>(
        stream: Firestore.instance
            .collection('UserData')
            .document('TjMJDFd940UtLORgdYND771GYwG2')
            .snapshots(),
        builder: (context, snapshot) {
          if (!snapshot.hasData) {
            return new Text("Loading");
          } else {
            Map<String, dynamic> documentFields = snapshot.data.data;
            return Text(documentFields["First Name"] +
                " " +
                documentFields["Last Name"]);
          }
        });
  }

请注意,TjMJDFd940UtLORgdYND771GYwG2是指documentID。

答案 1 :(得分:0)

Flutter Firebase API的文档已藏起来,并且很难找到。 Here's the documentation on the QuerySnapshot class

您正在尝试查看window.onunhandledrejection = function(e) { console.log('where does this originate from?', e.reason, e); } new Promise((resolve, reject) => { setTimeout(() => { reject('foo'); }, 2000); }); new Promise((resolve, reject) => { setTimeout(() => { reject('foo'); }, 2000); }); 对象的.document属性,因此抛出该错误是因为该属性不存在。尝试使用QuerySnapshot获取要迭代的文档列表(或者如果总是只有一个,则使用snapshot.documents),然后从中读取数据,即:snapshot.documents[0]。我删除了snapshot.documents[0].data[documentId]['First Name']引用中的引号,因为我们要索引变量值,而不仅仅是索引字符串“ documentId”。