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

Flutter中通过索引访问List元素时出现'The getter '[' isn't defined'报错的问题咨询

解决Dart List索引访问的语法错误

哦,我一眼就发现问题所在了!你遇到的错误完全是个小语法失误——在访问列表元素时,你不小心在widget.controllers后面多打了一个句号。

错误原因分析

Dart中访问List元素的正确语法是列表名[索引],而你写的widget.controllers.[1]和widget.controllers.[2]里,controllers后面的多余句号会让编译器无法识别[]这个索引操作符,所以才会抛出The getter '[' isn't defined for the type 'List<TextEditingController>'的错误。

修正后的代码

只需要把那两行里的多余句号删掉就可以了,修正后的_addCardWidgetExp方法如下:

List<TextEditingController> controllers = [];
void _addCardWidgetExp() {
  setState(() {
    widget.controllers.add(TextEditingController());
    widget.controllers.add(TextEditingController());
    widget.controllers.add(TextEditingController());
    widget.controllers.add(TextEditingController());
    _cardList.add(SizedBox(height: 10));
    // 补充:原代码的Divider未添加到列表,这里修正为加入_cardList
    _cardList.add(Divider(
      thickness: 2,
      color: Colors.white,
    ));
    _cardList.add(InputRefNomProduit(
      fieldController: widget.controllers.first,
      fieldController2: widget.controllers[1], // 移除了多余的句号
      fieldController3: widget.controllers[2], // 移除了多余的句号
      fieldController4: widget.controllers.last,
    ));
  });
}

另外顺便提一句:你原代码里单独写的Divider并没有被添加到_cardList中,如果你想让这个分割线出现在列表里,记得把它也用_cardList.add()包裹起来哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 17:27:35