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

Flutter报ToDouble is called on null错误及空值问题如何修复?

问题修复方案

1. 解决toDouble was called on null报错

报错根因是_currentBlend和recentData.Blend同时为空时,调用toDouble()方法触发空指针。修改Slider的value字段,增加兜底默认值即可:

// 修改前
value: (_currentBlend ?? recentData.Blend).toDouble(),
// 修改后,默认值3对应中间档位,可根据需求调整
value: (_currentBlend ?? recentData.Blend ?? 3).toDouble(),

同时需要检查你的UserData类定义,确保Blend字段有默认值,避免从数据库读取时返回空值。

2. 修复姓名输入框值不更新问题

TextFormField的initialValue仅在组件首次初始化时生效,你没有将数据库返回的recentData.Name同步到_currentName变量,导致值不更新。
在snapshot.hasData分支的UserData recentData = snapshot.data;代码后,新增变量初始化逻辑:

// 首次加载时用数据库返回值初始化本地变量
_currentName ??= recentData.Name;
_currentCupSize ??= recentData.CupSize ?? 'Select';
_currentBlend ??= recentData.Blend ?? 3;
_currentFlavour ??= recentData.Flavour ?? 'Select';
_currentCream ??= recentData.Cream ?? 'Select';
_currentToppings ??= recentData.Toppings ?? 'Select';

3. 修复Slider颜色异常隐藏bug

Colors.grey的取值要求是100的整数倍(100、200...900),你直接传入1-5的数值会返回空值,修改颜色配置:

// 修改前
activeColor: Colors.grey[_currentBlend ?? recentData.Blend],
inactiveColor: Colors.grey[_currentBlend ?? recentData.Blend],
// 修改后
activeColor: Colors.grey[(_currentBlend ?? recentData.Blend ?? 3) * 100],
inactiveColor: Colors.grey[(_currentBlend ?? recentData.Blend ?? 3) * 100],

4. 修复StreamBuilder空分支返回异常

你的StreamBuilder无数据分支仅调用了Loading()没有返回Widget,会触发空返回报错,修改为:

// 修改前
} else {
  Loading();
}
// 修改后
} else {
  return Loading();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 14:54:03