运行Dart代码提示'+'运算符无法无条件调用报错如何解决?
报错原因
这个报错是Dart空安全校验触发的,本质是当前Dart SDK的类型推导没有识别到fold方法的累加器参数curr在你的代码场景下不可能为空,将curr的类型判定为可空的int?,空安全规则禁止直接对可空类型调用+操作符,所以抛出了该错误。
你提供的代码本身逻辑没有问题,在新版Dart SDK中可以正常运行,报错多出现于较低版本的Dart/Flutter环境的类型推导局限性。
解决方案
- 方案1(最推荐):显式指定
fold的泛型参数为int,明确告知编译器累加器的类型是非空整数,从根源避免类型推导偏差:var foldNum = numbers.fold<int>(initialValue, (curr, next) => curr + next); - 方案2:对
curr添加非空断言!,你可以100%确认curr不会为空时使用:var foldNum = numbers.fold(initialValue, (curr, next) => curr! + next); - 方案3:添加空值 fallback 逻辑,兼容
curr为空的极端场景:var foldNum = numbers.fold(initialValue, (curr, next) => (curr ?? 0) + next);
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

