Flutter 为什么要创建列表的副本来检查列表是否包含副本的元素? 复制的列表

Flutter 为什么要创建列表的副本来检查列表是否包含副本的元素? 复制的列表,flutter,dart,Flutter,Dart,在浏览颤振框架回购协议时,我偶然发现: for(列表中的最终值已更改侦听器。来自(\u侦听器)){ if(_listeners.contains(listener)){ 监听器(事件); } } 据我所知,他们应该创建一个副本,使用与原始列表完全相同的元素,所以他们应该具有相同的元素,我猜 对于上下文,\u listeners变量的声明和初始化如下: 最终列表_侦听器=[]; 重新措辞的问题 基本上,如果-条件是否有一种不正确的方法 键入cast-inList.from 作者没有使用,因此

在浏览颤振框架回购协议时,我偶然发现:

for(列表中的最终值已更改侦听器。来自(\u侦听器)){
if(_listeners.contains(listener)){
监听器(事件);
}
}
据我所知,他们应该创建一个副本,使用与原始列表完全相同的元素,所以他们应该具有相同的元素,我猜


对于上下文,
\u listeners
变量的声明和初始化如下:

最终列表_侦听器=[];
重新措辞的问题 基本上,
如果
-条件是否有一种不正确的方法

键入cast-in
List.from
作者没有使用,因此可能
List.from在元素类型不匹配时丢弃某些元素?

但是,
\u监听器
变量已经强制执行了完全相同的类型,因此无论如何都不能添加具有不匹配类型的元素,对吗?

这是
ChangeNotifier
也能做到的

list clone和
contains
调用都是为了支持侦听器添加和删除侦听器。否则,可能会有一个错误

例如:

变更通知程序通知程序;
最终侦听器=()=>打印('hey');
notifier.addListener(){
如果(某物){
RemovelListener(监听器);
}
});

不过,我相信有更好的解决方案。我在此处打开了一个问题,描述了解决方案:。我在
state\u notifier