Flutter报错:类型'Iterable<dynamic>'未定义'[]'运算符求解决
解决Flutter中"The operator '[]' isn't defined for the type 'Iterable'"报错
问题原因
你代码里的_cart.items是Iterable[]索引访问,所以直接用_cart.items[index]会触发报错。教程里能正常运行,大概率是因为教程中的items定义为List类型,而你的代码里items可能是Iterable(比如调用了where/map这类返回Iterable的方法,或者定义时就用了Iterable类型)。
解决方法
给你两种实用的处理方式:
将Iterable转为List后使用索引
在访问元素前,先把_cart.items转成List:// 先转换为List final cartItems = _cart.items.toList(); // 再用索引访问 cartItems[index].name.text.make()要是在
ListView.builder里使用,也可以直接这么处理:ListView.builder( itemCount: _cart.items.length, itemBuilder: (context, index) { final item = _cart.items.toList()[index]; return Text(item.name); }, )用Iterable的遍历方法渲染(更推荐)
如果是要渲染购物车列表,没必要硬用索引,直接用Iterable的遍历方法更贴合它的设计逻辑:// 替换ListView.builder为ListView + map遍历 ListView( children: _cart.items.map((item) { return Text(item.name.text.make()); }).toList(), )
额外检查
可以看下_cart.items的定义:如果是你自己写的Cart类,确保items的类型是List<Item>而非Iterable<Item>;如果是从其他数据源获取的Iterable数据,记得按需转成List后再用索引访问。
内容的提问来源于stack exchange,提问作者Sarib Jawad
相关产品推荐
相关产品推荐

