“List<int>”类型的值不能分配给“Iterable<int>”类型的变量

时间:2020-12-20 00:05:22

标签: flutter dart

我不知道在我切换到 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)

3 个答案:

答案 0 :(得分:0)

我认为问题在于 as 更像是断言而不是演员表。要执行转换,您需要使用 .cast 函数:

https://api.flutter.dev/flutter/dart-core/List/cast.html

例如

# ...
.toList().cast<Iteratable<File>>()

您可以从这个答案中阅读更多内容,包括何时/为什么要casthttps://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();