提问人:un_cafeinoman 提问时间:3/17/2023 更新时间:3/17/2023 访问量:58
将数组中的值更改为 null 时出现问题
Problem when changing a value in an array to null
问:
我有一个可以为空的布尔值列表,如下所示:
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'
我检查了索引是否正常。
如果您有任何帮助,非常感谢。
答:
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;
评论