当修改复制列表中的值时,它会修改原始列表中的值 Flutter

When Modify a Value in the Copied List, It Modify the Value in The Original List Flutter

我想复制列表并且即使在编辑复制列表中的值时也不做任何引用。我尝试了 addAll()List.from()map()toList()[...myList],但没有用。

编辑澄清

例如:

class Item{
    String description;
    int price; 

    Item(this.description, this.price);
    }

List<Item> items = [
Item('item 1', 100),
Item('item 2', 200),
Item('item 3', 300),
];

List<Item> selectedItems = List.from(items);

当我编辑 selectedItems 原始列表时 items 应该不会受到影响,但事实并非如此?!

selectedItems[0].price = 115;

它修改了两者中元素 0 的价格。

Flutter 没有对象的复制函数,你应该手动创建“复制构造函数”。在这里讨论:How can I clone an Object (deep copy) in Dart?

您的示例的解决方案:

void main() {
  // Original list
  List<Item> items = [
    Item('item 1', 100),
    Item('item 2', 200),
    Item('item 3', 300),
  ];

  // Copied list
  List<Item> selectedItems = items.map((it) => Item.copy(it)).toList();

  // Change price for item in copied list
  selectedItems[0].price = 115;

  print("Original list:");
  items.forEach((it) => print("Description: ${it.description}, price: ${it.price}"));

  print("Copied list:");
  selectedItems.forEach((it) => print("Description: ${it.description}, price: ${it.price}"));
}

class Item {
  String description;
  int price;

  Item(this.description, this.price);

  // Copied constructor
  Item.copy(Item item) : this(item.description, item.price);
}