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

Flutter Dart中Realm DB按类型求和报错,求解决方案

问题解决:Realm DB按类型统计value总和

错误原因

你的查询语句逻辑完全颠倒,且误用了@sum操作符:

  • @sum在Realm中仅适用于列表类型的属性(比如List<double> values),而type是单个字符串字段,因此触发运行时错误。
  • 正确逻辑应该是先筛选指定type的条目,再对这些条目的value字段求和,而非反过来操作。

正确实现方案

1. 统计单个类型的value总和

先查询符合类型条件的所有条目,再计算value字段的总和:

// 查询所有type为"Groceries"的Item
var groceryItems = realm.query<Item>('type == "Groceries"');
// 计算总和
double groceryTotal = groceryItems.sum((item) => item.value);

或者用更简洁的链式写法:

double groceryTotal = realm.all<Item>().query('type == "Groceries"').sum((i) => i.value);

2. 按类型分组统计所有类型的总和

如果需要一次性统计所有类型的总和,可以先获取全部数据,再按type分组计算:

// 获取所有Item记录
var allItems = realm.all<Item>();
// 分组统计每个类型的value总和
Map<String, double> typeTotals = {};
for (var item in allItems) {
  typeTotals[item.type] = (typeTotals[item.type] ?? 0) + item.value;
}

// 示例:打印所有类型的统计结果
typeTotals.forEach((type, total) {
  print('$type 总金额:$total');
});

验证示例

用你提供的type="Crypto"、value=5987.0的测试数据,执行type == "Crypto"的查询求和,结果会正确返回5987.0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:05:07