You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter运行时报type 'Null'不是List<bool>子类型错误如何解决?

问题解决方案

问题根源

你的报错来自late List<bool> isSelected的初始化顺序不符合Flutter State生命周期要求:你在initState中先给isSelected赋值,再调用super.initState(),新版Dart的late变量校验规则会判定该变量在State初始化完成前被访问,返回null触发类型不匹配错误。

解决方案(二选一即可,优先推荐第二种)

方案1:调整initState执行顺序

将super.initState()放在initState的第一行,修正后代码:

@override
void initState() {
  super.initState();
  isSelected = [isMetric, isImperial];
}

方案2:直接初始化变量,避免使用late

late变量本身就有访问风险,你可以直接在定义isSelected时就赋初始值,完全去掉initState中的赋值逻辑,代码更简洁稳定:

  1. 将原late List<bool> isSelected;替换为:
List<bool> isSelected = [true, false];
  1. 删除initState中isSelected = [isMetric, isImperial];这行代码即可。

可空类型报错说明

ToggleButtons组件的isSelected参数要求传入不可空的List<bool>类型,你将变量改为可空的List<bool>?后,自然无法直接传入,除非你使用非空断言isSelected!强制转换,但这种方式存在空异常风险,不推荐使用。

内容的提问来源于stack exchange,提问作者agoidin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:36:07