gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 04:21:22 25 4
gpt4 key购买 nike

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

现有列表:

  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;
void initState() {
updatedItemList=[];
originalList.forEach((val){
updatedItemList.add(val);
});
super.initState();
}

按下按钮:

 updatedItemList[i].quantity=qtyReceive

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

最佳答案

正如@jamesdlin 提到的,创建深拷贝将通过更改对 list 中新的 ItemsModel object 的引用来解决问题。

创建深拷贝的小例子:

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}');
}
}

关于list - 从现有列表中创建一个新列表;根据对新列表的操作更改两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62481669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com