Flutter中调用求和方法显示Closure: () => int的问题解决
问题解决:输出Closure: () => int的原因及修复
核心问题
你看到Closure: () => int是因为你没有调用函数,只是把函数对象本身转成了字符串。在Dart中,直接使用$getSum会输出函数的类型信息,而不是执行函数后的返回值。
修复方法
把调用代码里的$getSum改成${getSum()}:
Text( '${getSum()}', style: bold6, ),
额外的安全优化
你的求和代码存在潜在的空安全风险,比如data可能为null,或者data是空列表时data.first会抛出异常,建议优化成以下版本:
int getSum() { // 先检查data是否为空 if (data == null || data!.isEmpty) { return 0; } final item = data!.first; int? uts = int.tryParse(item.nilaiIndeksUts ?? ''); int? akhir = int.tryParse(item.nilaiIndeksAkhir ?? ''); return (uts ?? 0) + (akhir ?? 0); }
扩展:对所有数据项求和
如果你的需求是对data列表中所有项的nilaiIndeksUts和nilaiIndeksAkhir求和,而非仅取第一项,可以使用fold方法实现:
int getTotalSum() { if (data == null || data!.isEmpty) { return 0; } return data!.fold(0, (sum, item) { int? uts = int.tryParse(item.nilaiIndeksUts ?? ''); int? akhir = int.tryParse(item.nilaiIndeksAkhir ?? ''); return sum + (uts ?? 0) + (akhir ?? 0); }); }
内容的提问来源于stack exchange,提问作者sharon
相关产品推荐
相关产品推荐

