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

Flutter读取Firebase数值做减法显示到ListTile结果异常问题

问题场景

应用运行效果截图
Firebase数据截图

开发Flutter应用时,需要对从Firebase获取的两个字段值做减法运算,将最终计算结果展示在ListTile组件的「Total In Service(在用设备总数)」条目下。从Firebase读取到的两个字段值如下:

  • Total Equipment(设备总数):80.0
  • Total OOS(停用设备总数):20.0

预期计算得到的在用设备总数为60.0,但实际页面仅展示字符串拼接内容Total In Service: 80.0 - 20.0,未执行数值减法运算。

原有问题代码中对应出错的部分如下:

ListTile(
  title: const Text('Total In Service'),
  subtitle: Text(
    'Total In Service: ${data['Total Equipment']} - ${data['Total OOS']}'),
),
问题原因

字符串插值语法里直接写入两个变量和减号字符时,Dart只会将变量值转为字符串、和普通字符-直接拼接,不会自动识别并执行算术运算。

修复方案

在字符串插值内部先完成数值类型转换、执行减法计算,再将最终计算结果拼入展示文本,修改后的代码如下:

ListTile(
  title: const Text('Total In Service'),
  subtitle: Text(
    // 显式转数值类型后做减法,避免类型异常
    'Total In Service: ${(data['Total Equipment'] as num) - (data['Total OOS'] as num)}'
  ),
),

优化提示:如果需要固定展示小数位数,可以在计算结果后调用toStringAsFixed(1),例如${((data['Total Equipment'] as num) - (data['Total OOS'] as num)).toStringAsFixed(1)},即可固定展示1位小数的结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:03:10