【发布时间】:2019-09-02 03:28:28
【问题描述】:
我有从 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,);
}
}
);
感谢您的帮助
【问题讨论】:
标签: flutter dart null ternary-operator snapshot