我有从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")
它必须是null安全的,因此如果找不到该属性,则该变量始终返回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,);
}
}
);
感谢您的帮助
答案 0 :(得分:1)
我认为以下代码将为您提供帮助
我们还必须检查长度
如果条件仅接受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);
}