我正在尝试从firestore中的flutter中检索单个文档,当存在文档时,它应该返回数据,而当不存在文档时,它应该返回空数据,到目前为止,我尝试过:
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: Firestore.instance.collection('Profile').document(user.uid).snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return new showProfile(
name: "null",
email: "null",
pin: "null",
state: "null",
);
}else {
var userDocument = snapshot.data;
return new showProfile(
name: userDocument["name"],
email: userDocument["email"],
pin: userDocument["pin"],
state: userDocument["state"],
);
}
},
);
}
但我收到此错误
答案 0 :(得分:1)
snapshot.data
为空,因此您会收到该错误,很可能user.uid
为空,这就是为什么没有获取任何数据的原因,您必须执行以下操作:
Stream<DocumentSnapshot> getData() async*{
var user = await FirebaseAuth.instance.currentUser();
yield* Firestore.instance.collection('Profile').document(user.uid).snapshots()
}
然后在StreamBuilder
内使用方法getData()
:
return StreamBuilder(
stream: getData(),