我是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
先前的错误
谢谢!
答案 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”。