从 flutter 中的现有列表创建一个新列表;根据对新列表的操作更改两个列表

Uma*_*air 3 list dart flutter flutter-onpressed

我正在从现有列表中创建一个列表,当我使用这个新列表并对其执行一些操作(例如更改其数量参数)时,它也会更改现有列表的参数。有人可以告诉我我哪里出了问题吗?

现有名单:

  List<ItemsModel> originalList=[
    ItemsModel(name: 'High Quality Double Spring Tummy Trimmer For Unisex',quantity: '30'),
    ItemsModel(name: 'High Quality Double Spring Tummy Trimmer For Unisex',quantity: '30'),
    ItemsModel(name: 'High Quality Double Spring Tummy Trimmer For Unisex',quantity: '30'),
  ];
Run Code Online (Sandbox Code Playgroud)

新名单:

  List<ItemsModel> updatedItemList;
      void initState() {
        updatedItemList=[];
        originalList.forEach((val){
      updatedItemList.add(val);
    });
        super.initState();
      }
Run Code Online (Sandbox Code Playgroud)

按下按钮时:

 updatedItemList[i].quantity=qtyReceive
Run Code Online (Sandbox Code Playgroud)

在按下某个按钮时,我正在执行更新两个列表的操作。为什么??

dev*_*tgs 7

正如 @jamesdlin 提到的,创建深层副本将通过更改ItemsModel objectlist.

创建深拷贝的小例子:

class ItemsModel{
  String name;
  String quantity;
  ItemsModel({this.name,this.quantity});
}


void main() {
   List<ItemsModel> originalList=[
    ItemsModel(name: 'High Quality Double Spring Tummy Trimmer For Unisex',quantity: '30'),
    ItemsModel(name: 'High Quality Double Spring Tummy Trimmer For Unisex',quantity: '30'),
    ItemsModel(name: 'High Quality Double Spring Tummy Trimmer For Unisex',quantity: '30'),
  ];

  List<ItemsModel> updatedItemList;
  updatedItemList=[];
  originalList.forEach((val){
      //creating new ItemsModel objects and adding to the updatedList
      updatedItemList.add(ItemsModel(name:val.name,quantity:val.quantity));
    });

  print('Original List');
  for(var listItem in originalList){
    listItem.quantity = '60';
    print('${listItem.name},${listItem.quantity}');
  }

  print('Updated List');
    for(var listItem in updatedItemList){
    print('${listItem.name},${listItem.quantity}');
  }
}
Run Code Online (Sandbox Code Playgroud)