[英]Can't Get data from Cloud Firestore in flutter app
我创建了 createRecord() 方法:
CollectionReference addBlog = FirebaseFirestore.instance.collection('blogAddress');
Future<void> createRecord() {
// Call the user's CollectionReference to add a new user
return addBlog
.add({
'blogAddress': IfUserProfile.blog, // Stokes and Sons
})
.then((value) => print("Blog Added"))
.catchError((error) => print("Failed to add Blog: $error"));
}
从 textformField 创建记录:
onChanged: (value) {
IfUserProfile.blog = value;
},
现在我试图将这些数据放到另一个屏幕中,我调用了这个实例:
CollectionReference blogAddress =
FirebaseFirestore.instance.collection('blogAddress');
我用 FutureBuilder 包装我有数据的列:
FutureBuilder<DocumentSnapshot>(
future: blogAddress.doc().get(),
builder: (BuildContext context,
AsyncSnapshot<DocumentSnapshot> snapshot) {
if (snapshot.hasError) {
return Text("Something went wrong");
}
if (snapshot.connectionState == ConnectionState.done) {
Map<String, dynamic> data = snapshot.data.data();
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
height: 30,
),
Text("Full Name: ${data['blogAddress']}"),
但我无法获得数据:
在 null 上调用了方法“[]”。接收方:null 尝试调用:
snapshot.data.data()
返回 null。当您请求不存在的文档时会发生这种情况。 您的代码blogAddress.doc().get()
永远不会获取文档,因为没有 arguments 的doc()
会生成对尚不存在的随机文档 ID 的引用。 如果你想要一个特定的文档,你应该将文档 ID 传递给doc()
。
blogAddress.doc("the-document-ID-you-want").get()
Try this,
body: StreamBuilder(
stream: Firestore.instance
.collection('blogAddress')
.snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.data.toString()=='null')
return Text('');
if (snapshot.hasError)
return new Text('Error: ${snapshot.error}');
if(snapshot.data.documents.length<1)
return SizedBox.shrink();
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return new Text('Loading...');
default:
Print("snapshotData:- "+snapshot.data.documents.toString());
return new ListView(
children: snapshot.data.documents
.map((DocumentSnapshot document) {
Print("documentAll :-"+document.toString());
Print("document blogAddress:- "+ document['blogAddress'].toString());
return Text(document['blogAddress'].toString());
}).toList(),
);
}
},
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.