我不知道在我切换到 Flutter 中的 beta 频道之前是否发生了这种情况,但我不明白为什么这是一个错误。列表是可迭代的,对吗?我以 official docs 中的示例为例。
Iterable<int> example() {
Iterable<int> iterable = [1, 2, 3];
return iterable;
}
VSCode 用红色下划线标记列表告诉我:
A value of type 'List<int>' can't be assigned to a variable of type 'Iterable<int>'.
Try changing the type of the variable, or casting the right-hand type to 'Iterable<int>'. dart(invalid_assignment)
答案 0 :(得分:0)
我认为问题在于 as
更像是断言而不是演员表。要执行转换,您需要使用 .cast
函数:
https://api.flutter.dev/flutter/dart-core/List/cast.html
例如
# ...
.toList().cast<Iteratable<File>>()
您可以从这个答案中阅读更多内容,包括何时/为什么要cast
:https://stackoverflow.com/a/49542401/931209
或者,您可以调用列表中的 iterator
属性(但以上可能是更正确的解决方案):
https://api.dart.dev/stable/2.10.4/dart-core/Iterable/iterator.html
答案 1 :(得分:0)
我不知道是什么问题,但我尝试从 VSCode 中删除 Flutter 和 Dart 扩展,重新启动整个计算机并再次安装它们(按此顺序),现在相同的代码可以工作了!
正如 BeefPapa 在评论中所说,代码完全正确。
谁知道发生了什么。
答案 2 :(得分:-1)
return iterable.map((e) => e as int).toList();