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

Flutter Dart报错:类型'Transaction'未定义运算符'[]' 金额求和如何解决?

报错原因

你的代码里有两处语法错误共同触发了该报错:

  • 错误使用类名Transaction访问列表元素:你的交易存储在实例变量_userTransactions列表中,需要通过_userTransactions[下标]的方式获取对应位置的Transaction实例,直接写Transaction[qindex]是把类本身当成了列表使用,属于语法错误。
  • 把类实例当成Map访问属性:Transaction是你自定义的实体类,不是Map结构,Dart中自定义类的属性需要用.运算符访问,使用['amount']访问会被识别为调用类的[]运算符,而你没有给Transaction类定义该运算符,所以触发报错。

另外你当前的逻辑也没有实现全列表遍历求和的需求,仅每次调用函数累加一个元素的金额,还会存在下标越界的风险。

修复方案

方案1:修复原有逐次累加逻辑

只需要修改错误的取值行,同时增加越界判断即可:

void _sum_all_transactions() {
  setState(() {
    qindex = qindex + 1;
  });
  // 增加越界判断,避免下标超过列表长度报错
  if (qindex < _userTransactions.length) {
    // 改为从列表取实例,用.访问amount属性
    totalamount += _userTransactions[qindex].amount;
  }
}

方案2:一次性统计所有交易总金额(更推荐)

如果你不需要逐次累加,直接要所有交易的总金额,可以直接用列表的fold方法实现,不需要自己维护下标变量,代码更简洁不易出错:

void _sum_all_transactions() {
  setState(() {
    // 0是初始值,遍历所有元素累加amount得到总和
    totalamount = _userTransactions.fold(0, (currentSum, transaction) => currentSum + transaction.amount);
  });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:09:01