我正在从Firestore流式传输文档快照,但是当数据库中没有任何内容时,snapshot.hasData将返回true。尝试从快照中检索值时,这导致我的代码失败。
我该如何解决?
我尝试打印出快照。数据只是有一个Documentsnapshot实例。还考虑过向流提供初始数据,但是我不知道如何提供一个空的DocumentSnapshot数据类型。
如果我手动将记录插入到Firestore中,则可以正常工作。
StreamBuilder<DocumentSnapshot>(
stream: Firestore.instance.collection('UserDetails').document(widget.uid).snapshots(),
builder: (context, snapshot){
if(snapshot.hasError){
widget._err = snapshot.error;
} else if (snapshot.connectionState == ConnectionState.waiting){
widget._loadingUserInfo = true;
} else if (snapshot.hasData){
nameController.text = snapshot.data['name'];
ageController.text = snapshot.data['age'];
introController.text = snapshot.data['intro'];
widget._loadingUserInfo = false;
}
)
我正在尝试从Firestore获取用户值,以便在存在值或用户存在的情况下填写其表单。
现在,它只是失败了。
hasData
在没有数据时不可能返回true
。
hasData
只是以下各项的简写:
snapshot.data != null
这意味着您do有数据。但也许不是您想要的数据。
您为什么不添加验证?
类似
if (snapshot.hasData && (snapshot.data == null) return SizedBox();
此外,如果您正在检索列表,则可以检查data != null and snapshot.data.length == 0;
snapshot.hasData
将返回true 对于空数据集,即:]]
snapshot.data = []
个人,我认为hasData
的意思是“有回应”。