从现有列表中创建一个新列表;根据对新列表的操作更改两个列表
Making a new list from existing list in flutter; changes both list upon action on new list
我正在根据现有列表制作一个 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}');
}
}
我参加聚会迟到了,但无论如何这可以帮助到这里的其他人
解决方案——使用
myList = List.from(mynewlist);
而不是
mylist = mynewlist;
我正在根据现有列表制作一个 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}');
}
}
我参加聚会迟到了,但无论如何这可以帮助到这里的其他人 解决方案——使用
myList = List.from(mynewlist);
而不是
mylist = mynewlist;