list - 为什么数据会在列表中添加两次?
问题描述
我在 Provider 中有一个名为 weekItems2 的列表,我做了几个函数。当需要插入第一个数据时,我调用 inititalizeWeeklyItems() 函数,然后调用 addWeeklyItems() 函数。每当调用 addWeeklyItems() 时,数据都会在列表中插入两次。
这些是功能。
inititalizeWeeklyItems(value) {
this.isW = true;
this.weeklyNewItems2 = value;
notifyListeners();
}
addWeeklyNewItems(value) {
print('called');
print(value.itemRateMasterId);
this.weeklyNewItems2.add(value);
notifyListeners();
}
这些是我调用提供程序函数的函数。
void addNewItems(int index) {
/// category_master;
// print('show ${showList[index].itemId}');
List<Category> category =
Provider.of<Admin>(context, listen: false).getCategory;
/// subcategory_master;
List<Subcategory> subcategory =
Provider.of<Admin>(context, listen: false).getSubcategory;
List<Items> items = Provider.of<Admin>(context, listen: false).getItems;
for (Items item in items) {
int categoryIndex =
category.indexWhere((element) => element.id == item.categoryId);
int subcategoryIndex =
subcategory.indexWhere((element) => element.id == item.subcategoryId);
List<Rate> itemRates = [];
if (item.id == showListPackage[index].itemId) {
for (int i = 0; i < showListPackage[index].rates.length; i++) {
if (showListPackage[index].rates[i].price ==
showListPackage[index].selectedUserPrice) {
Rate rate = Rate(
itemUnitMasterId:
showListPackage[index].rates[i].itemUnitMasterId,
unit: showListPackage[index].rates[i].unit,
quantity: showListPackage[index].rates[i].quantity,
price: showListPackage[index].rates[i].price,
merchantRate: showListPackage[index].rates[i].merchantRate);
itemRates.add(rate);
}
}
}
if (item.id == showListPackage[index].itemId) {
print('showa ${item.subheading}');
if (itemRates.length != 0) {
ShowItem showItem = ShowItem(
time: item.time,
subheading: item.subheading,
categoryName: category[categoryIndex].categoryName,
subcategoryName: subcategory[subcategoryIndex].subcategoryName,
subcategoryId: item.subcategoryId,
status: item.status,
menuType: item.menuType,
itemId: item.id,
image: item.image,
heading: item.heading,
categoryId: item.categoryId,
description: item.description,
date: item.date,
rates: itemRates);
PackageDetails packageDetails = PackageDetails(
categoryId: item.categoryId,
subcategoryId: item.subcategoryId,
status: item.status,
itemRateMasterId: itemRates[0].itemUnitMasterId,
itemId: item.id,
packageId: '1');
addItems.add(packageDetails);
print('asdasd ${packageDetails.itemRateMasterId}');
if (Provider.of<Admin>(context, listen: false).isWeeklyItemAdded()) {
if (Provider.of<Admin>(context, listen: false)
.checkWeeklyNewItems(packageDetails) !=
-1) {
Provider.of<Admin>(context, listen: false)
.addWeeklyNewItems(packageDetails);
} else {
addItemPageScaffoldKey.currentState.showSnackBar(SnackBar(
content: Text('This Item is Already added'),
));
}
} else {
Provider.of<Admin>(context, listen: false)
.inititalizeWeeklyItems(addItems);
}
}
}
}
print('lengehthsaf');
print(Provider.of<Admin>(context, listen: false).getWeeklyNewItems.length);
}
控制台打印这个。
I/flutter (20653): showa Tomato Non Chemical
I/flutter (20653): asdasd 106
I/flutter (20653): lengehthsaf
I/flutter (20653): 1
I/flutter (20653): showa Turmeric Powder
I/flutter (20653): asdasd 96
I/flutter (20653): called
I/flutter (20653): 96
I/flutter (20653): lengehthsaf
I/flutter (20653): 3