我有从 firestore 返回的数据,这些数据要么返回 null,要么暂时返回 null。
我做了一个检查以确保快照有这样的数据:
parentSnapshot.data != null && parentSnapshot.hasData
我还尝试使用这样的三元来保护属性为 null:
var isParent = parentSnapshot.data['isParent'] ?? false;
但出于某种原因,我仍然不断得到:
The method '[]' was called on null
Reciever: null
Tried calling: []("isParent")
它必须是空安全的,所以如果找不到该属性,那么变量总是返回 false,所以我控制显示的内容。
以下是完整的代码:
return StreamBuilder<Object>(
stream: Firestore.instance.collection(parent).document(
widget.menuItemsList[index]['name']).snapshots(),
builder: (BuildContext context, AsyncSnapshot parentSnapshot) {
if (parentSnapshot.data != null && parentSnapshot.hasData) {
var isParent = parentSnapshot.data['isParent'] ?? false;
if (isParent){
return GridButtons(widget.menuItemsList[index]['name'], animation, index, parent, collection, parentSnapshot, widget.menuItemsList, widget.listKey);
} else {
return SizedBox(width: 0, height: 0,);
}
} else {
return SizedBox(width: 0, height: 0,);
}
}
);
感谢您的帮助
我认为下面的代码会帮助你
我们还必须检查长度
如果条件只接受 dart 语言中的布尔值
if (parentSnapshot.hasData && parentSnapshot.data != null && parentSnapshot.data.length > 0 ) {
var isParent = parentSnapshot.data['isParent'] != null ? true : false;
if (isParent){
return GridButtons(widget.menuItemsList[index]['name'], animation, index, parent, collection, parentSnapshot, widget.menuItemsList, widget.listKey);
}