【发布时间】:2020-06-16 21:37:13
【问题描述】:
复制列表
我在浏览 Flutter 框架存储库时偶然发现了 following snippet:
for (final ValueChanged<RawKeyEvent> listener in List<ValueChanged<RawKeyEvent>>.from(_listeners)) {
if (_listeners.contains(listener)) {
listener(event);
}
}
据我所知,List.from 应该创建一个与原始列表具有完全相同元素的副本,所以它们应该具有相同的元素,我猜?
对于上下文,_listeners 变量的声明和初始化如下:
final List<ValueChanged<RawKeyEvent>> _listeners = <ValueChanged<RawKeyEvent>>[];
问题改写
基本上,if-条件是否曾经不正确?
输入List.from
作者没有使用List.of,所以可能List.from在元素类型不匹配的情况下会丢弃一些元素?
但是,_listeners 变量已经强制执行完全相同的类型,所以无论如何都不能添加类型不匹配的元素,对吧?
【问题讨论】: