gpt4 book ai didi

flutter - 为什么要创建列表副本以检查列表是否包含副本元素?

转载 作者:行者123 更新时间:2023-12-03 03:33:35 24 4
gpt4 key购买 nike

复制 list

在浏览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 -condition 不是真正的

键入 List.from
作者没有使用 List.of ,所以当元素的类型不匹配时, List.from可能会丢弃某些元素吗?
但是,然后 _listeners变量已经强制使用了完全相同的类型,因此无论如何都不能添加类型不匹配的元素,对吗?

最佳答案

这也是ChangeNotifier也可以做到的。

进行列表克隆和contains调用的原因是为了支持让侦听器添加和删除侦听器。否则,可能存在 ConcurrentModificationError

例如:

ChangeNotifier notifier;

final listener = () => print('hey');

notifier.addListener(() {
if (something) {
notifier.removeListener(listener);
}
});

关于flutter - 为什么要创建列表副本以检查列表是否包含副本元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62417999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com