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

如何修复Flutter布尔表达式报错type 'Null' is not a 'bool'

问题原因

  • 键名大小写不匹配:你在setState中更新data字典时,昼夜状态的键名为isDaytime(末尾t小写),但三元运算符中取值使用的键名是isDayTime(末尾T大写),二者名称不匹配导致取值永远为null:
    • 写(data['isDayTime']==null)? 'day.png' : 'night.png'时会永远命中判空成立的分支,返回day.png
    • 直接写data['isDayTime']? 'day.png' : 'night.png'时,Dart要求布尔表达式必须为非空bool类型,null不符合规则因此抛出类型错误
  • Dart空安全规则限制:布尔判断位置不允许出现Null类型的值,必须明确为true/false

修复方案

首先统一键名,然后用空判断操作符??给可能为空的字段设置默认布尔值,示例代码如下:

// 键名和setState中保存的isDaytime保持一致,null时默认按夜间处理,可自行调整默认值
String bgImage = (data['isDaytime'] ?? false) ? 'day.png' : 'night.png';

如果需要值为null时默认显示白天,将默认值改为true即可:

String bgImage = (data['isDaytime'] ?? true) ? 'day.png' : 'night.png';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:57:03