将数组中的值更改为 null 时出现问题

Problem when changing a value in an array to null

提问人:un_cafeinoman 提问时间:3/17/2023 更新时间:3/17/2023 访问量:58

问:

我有一个可以为空的布尔值列表,如下所示:

late List<bool?> isClosed;
...
void initState() {
    super.initState();

    isClosed = widget.gateway.nodes.map((e) {
      return e.devices.firstWhere((element) {
            return element.type == 'lock';
          }).state ==
          'close';
    }).toList();

  }

稍后在我的代码中,我必须将数组的值更改为 null,如下所示:

isClosed[index] = null;
    setState(() {});

当我等待 API 调用的响应时,我使用它来获得加载效果。 但这是我的问题,当调用上一行并分配 null 时,我收到此错误:

Unhandled Exception: type 'Null' is not a subtype of type 'bool' of 'value'

我检查了索引是否正常。

如果您有任何帮助,非常感谢。

数组 flutter 类型 null drat

评论


答:

0赞 Ivo 3/17/2023 #1

您需要在映射中指明类型,例如:

isClosed = widget.gateway.nodes.map<bool?>((e) {  //notice I added <bool?>
  return e.devices.firstWhere((element) {
        return element.type == 'lock';
      }).state ==
      'close';
}).toList();

评论

0赞 un_cafeinoman 3/17/2023
就是这样,非常感谢!
0赞 G3nt_M3caj 3/17/2023 #2

发生这种情况是因为 is 本身为 null(可能在第一次实例中使用延迟访问): 请尝试如下操作:isClosed

if (isClosed != null &&  isClosed.length > index) isClosed[index] = null;