如果 listA = List.from(list) 在颤动中,如何防止元素不从列表中编辑并从 listA 中编辑?

Posted

技术标签:

【中文标题】如果 listA = List.from(list) 在颤动中,如何防止元素不从列表中编辑并从 listA 中编辑?【英文标题】:How to prevent element not to be edited from listB and to be edited from listA if listA = List.from(listB) in flutter? 【发布时间】:2020-12-15 03:02:00 【问题描述】:

在颤振中,我有两个列表,代码如下。我从 ListA 更改了一个元素,但它也从 ListB 更改,为什么会发生这种情况??

List<Model> listA = List(),
        listB = [
          new Model.withData(value: "b1"),
          new Model.withData(value: "b2")
    ];
    listA = List.from(listB);
    print("listA:" + listA.toString() + "   listB:" + listB.toString());
    listA[0].value = "a1";
    print("listA:" + listA.toString() + "   listB:" + listB.toString());

这给出了输出

 listA:[Modelvalue: b1, Modelvalue: b2]   listB:[Modelvalue: b1, Modelvalue: b2]
 listA:[Modelvalue: a1, Modelvalue: b2]   listB:[Modelvalue: a1, Modelvalue: b2]

如何仅从 ListA 而不是从 ListB 更改元素?

这是我的模型类

class Model
  String value;
  Model.withData(this.value);

  @override
  String toString() 
    return 'Modelvalue: $value';
  

提前致谢。

【问题讨论】:

【参考方案1】:

我认为您将对象从 listB 复制到 listA 因此在两个列表中,列表项都引用相同的对象,并且当您更改对象时,它会影响两个列表。

for(listB 中的 var 模型) listA.add(new Model.withData(value:model.value))

我希望尝试这种方法,这会有所帮助。

【讨论】:

以上是关于如果 listA = List.from(list) 在颤动中,如何防止元素不从列表中编辑并从 listA 中编辑?的主要内容,如果未能解决你的问题,请参考以下文章

在 Dart 中,List.from 和 .of 以及 Map.from 和 .of 有啥区别?

list的交集,差集,并集

如何对2个LIST中的元素进行比较

list的取差集

两个List 比较

列表交集,并集和差集