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

ListView中TextField值全部相同:传递前两索引值计算为何失效?

问题产生的原因分析
  • 所有TextField共用同一个TextEditingController
    你在ListView.builder中给每一个TextField都绑定了同一个_costtextController,只要这个控制器的文本内容发生变化,所有输入框都会同步显示相同的值,这是导致所有输入框内容一致的直接原因。

  • 存储输入值的Map每次调用都会被重置
    在takeCostingValue方法里,每次触发输入事件都会新建一个空的quantities Map:Map<String, int> quantities = {};,这意味着每次输入只能保存当前输入的那个值,之前输入的内容会被完全清空,根本无法同时存储第一个和第二个输入框的数值,自然无法正确计算两者的乘积。

  • 错误的类型转换与控制器更新逻辑
    你将计算得到的int类型乘积result直接强制转换为TextEditingController类型:_costtextController = result as TextEditingController;,这是完全错误的类型转换操作。正确的做法应该是设置控制器的text属性(比如_costtextController.text = result.toString();),但即便修正这一步,由于所有输入框共享同一个控制器的问题,所有输入框依然会显示相同内容。

  • 索引处理与乘积逻辑存在漏洞
    一方面你将int类型的索引转为String类型传递,但更关键的是,当前逻辑不管用户输入的是第几个输入框,都直接取totalObj[0] * totalObj[1]计算乘积,既没有判断是否已经输入了前两个值,也没有区分哪些输入框用于输入乘数、哪些用于显示乘积,逻辑完全混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:56:10