为何将Stateless Widget改为Stateful Widget后无法使用.sum方法?
问题:Stateless转Stateful后List的sum方法报错
原本在Stateless Widget中正常运行的函数,改为Stateful Widget后,numbers.sum代码处出现波浪线,报错提示:
'List'类型没有定义getter 'sum'。尝试导入定义了'sum'的库,将名称更正为现有getter的名称,或者定义一个名为'sum'的getter或字段。
问题原因
这个报错和Stateless/Stateful Widget的类型无关,核心是Dart原生List类本身并没有内置sum方法。你之前在Stateless Widget中能正常使用,大概率是因为当时导入了第三方库(比如collection包的扩展),或者自己给List写了扩展方法,但在转换为Stateful Widget时,对应的导入或扩展代码没有同步到新的文件/代码块中。
解决办法
- 若使用第三方库(如
collection):确保当前Stateful Widget所在文件顶部导入对应库:import 'package:collection/collection.dart'; - 若使用自定义扩展:将你的
sum扩展方法代码复制到当前文件,或确保它被正确导入 - 也可以手动计算总和,无需依赖扩展:
final sum = numbers.fold(0.0, (prev, curr) => prev + curr);
内容的提问来源于stack exchange,提问作者Mackina
相关产品推荐
相关产品推荐

