我在Visual Studio Code中使用Dart出现方法未定义报错该如何解决
问题原因
- Dart中
List的iterator属性返回值类型为Iterator,你将其赋值给了显式声明为Iterable类型的变量b。Iterable仅负责生成迭代器,本身不包含moveNext方法和current属性,这两个成员仅属于Iterator类型,因此触发类型不匹配的报错。
修复方案
两种可选修复方式:
- 方案1:使用自动类型推导,不手动声明变量
b的类型,Dart会自动将其推断为Iterator类型
void main() { List a = ["aa", "bbb", "ccccc"]; var b = a.iterator; while (b.moveNext()) { print(b.current); } }
- 方案2:显式将变量
b的类型声明为Iterator
void main() { List a = ["aa", "bbb", "ccccc"]; Iterator b = a.iterator; while (b.moveNext()) { print(b.current); } }
额外优化建议:如果不需要手动控制迭代流程,更推荐使用for-in循环直接遍历Iterable对象,代码更简洁易读:
void main() { List a = ["aa", "bbb", "ccccc"]; for (var element in a) { print(element); } }
内容的提问来源于stack exchange,提问作者Abdurrahman Faraj
相关产品推荐
相关产品推荐

