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
相关产品推荐
相关产品推荐

