【问题标题】:Flutter how to protect from null values when getting attribute values of snapshotFlutter在获取快照的属性值时如何防止空值
【发布时间】: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


    【解决方案1】:

    我认为下面的代码会对你有所帮助

    我们还要检查长度

    if 条件只接受 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);
                }
    

    【讨论】:

    • 感谢您的回复。事实证明我正在调用无效集合,但它返回的结果没有错误。这就是缺少字段的原因
    猜你喜欢
    • 2021-04-09
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多