在获取快照的属性值时如何防止空值



我有从 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);
}

相关内容

  • 没有找到相关文章

最新更新