【问题标题】:How to prevent element not to be edited from listB and to be edited from listA if listA = List.from(listB) in flutter?如果 listA = List.from(list) 在颤动中,如何防止元素不从列表中编辑并从 listA 中编辑?
【发布时间】: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:[Model{value: b1}, Model{value: b2}]   listB:[Model{value: b1}, Model{value: b2}]
 listA:[Model{value: a1}, Model{value: b2}]   listB:[Model{value: a1}, Model{value: b2}]

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

这是我的模型类

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

  @override
  String toString() {
    return 'Model{value: $value}';
  }
}

提前致谢。

【问题讨论】:

    标签: android list flutter dart


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-12-31
      • 2016-07-08
      • 2023-03-23
      • 2023-03-11
      • 2020-12-03
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多