Iterable 的 whereType 方法行为

Mar*_*łek 5 dart flutter

我在理解iterable's 的whereType工作原理时遇到问题。

我有以下示例,但我不知道它为什么会这样。有这个代码:

List<dynamic> list = ["SomeString", 12];
print(list);
print(list.whereType<String>());
print(list.where((item) => item is String));
Run Code Online (Sandbox Code Playgroud)

输出是:

[SomeString, 12]
(SomeString, 12)
(SomeString)
Run Code Online (Sandbox Code Playgroud)

我希望第二次打印中只有 String 。有人可以向我解释为什么我错了吗?

Gün*_*uer 4

我认为这是一个不一致的地方,因为whereType它是为 Dart2 设计的,但 Dart2 并不完整。

有一个看起来类似的未决问题

dart --reify-generic-functions my_script.dart
Run Code Online (Sandbox Code Playgroud)

应该让它发挥作用