首页 > 解决方案 > 为什么数据会在列表中添加两次?

问题描述

我在 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

标签: listflutterdartprovider

解决方案


推荐阅读