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

如何修复Dart中参数类型'int?'无法赋值给参数类型'num'的报错

问题原因

  • Dart空安全规则下,int? 标记的变量属于可空类型,取值可能为null,而算术运算要求的num(包括int、double)类型必须为非空数值,空值无法直接参与运算,因此触发类型不匹配报错。
  • 你的_total初始默认值为null,只有异步方法_calcTotal执行完成后才会被赋值,执行运算逻辑时_total可能仍为空,因此直接运算会报错。

解决方法

可根据业务场景选择以下任意方案:

方案1:设置空值默认 fallback(推荐)

使用??运算符指定_total为空时的替代值,比如空值按0计算:

int resulttext = int.parse(goal) - (_total ?? 0) + int.parse(workout);
remaining = resulttext.toString();

方案2:强制断言非空

如果你能100%保证执行运算时_total已经完成赋值不为空,可以用!强制标记为非空:

// 注意:如果此时_total仍为null会抛出空异常,需确认业务逻辑能保证非空时再使用
int resulttext = int.parse(goal) - _total! + int.parse(workout);
remaining = resulttext.toString();

方案3:增加空判断分支

运算前先判断_total是否为空,分别处理不同场景:

if (_total != null) {
  int resulttext = int.parse(goal) - _total! + int.parse(workout);
  remaining = resulttext.toString();
} else {
  // 自定义空值时的逻辑,比如设置加载提示
  remaining = "计算中";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:54:07