如果 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 中编辑?的主要内容,如果未能解决你的问题,请参考以下文章