Dart空安全迁移后调用List.reduce(max)报错无法推断类型参数'T'
根因说明
空安全模式下,你的weightChart列表被推断/声明为List<double?>(可空双精度浮点集合),而系统内置的max函数要求入参必须是继承自num的非空类型,double?不满足该约束,因此reduce方法无法完成泛型参数推断,抛出异常。
可选用的解决方案
方案一【最推荐,适用于列表无空元素场景】
声明weightChart时直接指定非空类型,从类型定义层面避免可空问题:// 声明为非空double类型列表,无需额外处理即可调用reduce(max) List<double> weightChart = [45.3, 21.5, 521.3]; final maxValue = weightChart.reduce(max);方案二【适用于无法修改列表声明类型、且确认无空元素场景】
调用cast方法强转为非空类型后再执行reduce:final maxValue = weightChart.cast<double>().reduce(max);方案三【适用于列表确实存在空元素场景】
自定义比较逻辑,自行处理空值 fallback 逻辑:// 空值默认按0处理,可根据业务需求调整兜底值 final maxValue = weightChart.reduce((a, b) => max(a ?? 0, b ?? 0));
内容的提问来源于stack exchange,提问作者Dalon
相关产品推荐
相关产品推荐

