我创建了一个函数userData(),代码为
userData() async
{
var userData = await _db.collection('users').document(_uuid).get();
return userData;
}
我将使用uid获取特定用户的数据并将其返回。
我用来打印数据的代码如下
return FutureBuilder(
future: authService.userData(),
builder: (_,snapshots){
if(snapshots.connectionState == ConnectionState.waiting)
{
return Center(child: Text('Loading...'),);
}
else{
print("Snapshots: "+snapshots.toString());
return ListView.builder(itemCount: 1, itemBuilder: (_,index){
return ListTile(
title: Text(snapshots.data["username"].toString()),
);
});
}
}
);
firestore的结构是
Collection('user')-> document(uid)-> 1.username 2.email ....
此错误的原因是什么以及如何解决?
答案 0 :(得分:2)
错误消息告诉您snapshots.data
为空,因此您无法使用[]
运算符对其进行索引。
在使用DocumentSnapshot之前,您应该先检查它是否exists,然后再访问其字段数据。如果文档不存在,快照的data属性将为null。
答案 1 :(得分:0)
对于Firestore,我建议使用Stream Builder,而不是将来的Builder。
return StreamBuilder(
stream: Firestore.instance
.collection('user')
.document(uid)
.snapshots(),
builder: (_,snapshot){
if(!snapshot.hasData)
{
return Center(child: Text('Loading...'),);
}
else{
return ListView.builder(itemCount: 1, itemBuilder: (_,index){
return ListTile(
title: Text(snapshots.data["username"].toString()),
);
});
}
}
);