Flutter 在颤振腹板中使用折叠方法不起作用

Flutter 在颤振腹板中使用折叠方法不起作用,flutter,flutter-web,Flutter,Flutter Web,我有一个折叠方法和排序,在Flutter for mobile中有效,但在web版本中不起作用。当我访问我的主页时,我得到的错误是: 未来建设者 lib/../HomePage/Home.dart:356 当抛出异常时,这是堆栈 packages/BuddiesWebApp/Pages/HomePage/Home.dart.lib.js 3503:35[\u GetProductsInHeaders] packages/BuddiesWebApp/Pages/HomePage/Home.dart

我有一个折叠方法和排序,在Flutter for mobile中有效,但在web版本中不起作用。当我访问我的主页时,我得到的错误是:

未来建设者 lib/../HomePage/Home.dart:356 当抛出异常时,这是堆栈 packages/BuddiesWebApp/Pages/HomePage/Home.dart.lib.js 3503:35[\u GetProductsInHeaders] packages/BuddiesWebApp/Pages/HomePage/Home.dart.lib.js 3640:70 packages/flatter/src/widgets/async.dart.lib.js 517:77构建

这是我的筛选方法:

  List<ProductsInHeading> _getProductsInHeadings(List<Product> items) {
    switch (selectedTab) {
      case FilterTabs.Feels:
        final Map<String, List<Product>> allFeelings =
            Map.fromEntries(TabCategories.feeling.map((e) => MapEntry(e, [])));

        Map<String, List<Product>> headingItems =
            items.fold(allFeelings, (feelings, element) {
          if (!feelings.containsKey(element.effect)) {
            return feelings;
          }

          return feelings
            ..update(element.effect, (value) => value..add(element));
        });
        productList = headingItems;
        print("headingItems: $headingItems");

        return headingItems.entries
            .map((e) => ProductsInHeading(e.key, e.value..sort()))
            .toList()
              ..sort()
              ..where((e) => e.products.length != 0);
        break;



  case FilterTabs.Rec:
    final Map<String, List<Product>> allRecommended =
        Map.fromEntries(recCategories.map((e) => MapEntry(e, [])));

    Map<String, List> headingItems =
        items.fold(allRecommended, (feeling, element) {
      if (!feeling.containsKey(element.effect)) {
        return feeling;
      }

      return feeling
        ..update(recCategories.toString(), (value) => value..add(element));
    });
    productList = headingItems;
    print("headingItems: $headingItems");

    return headingItems.entries
        .map((e) => ProductsInHeading(e.key, e.value..sort()))
        .toList()
          ..sort()
          ..where((e) => e.products.length != 0);
    break;



      case FilterTabs.Relief:
        // usage might be wrong, I'm not sure
        final Map<String, List<Product>> allRecovery =
            Map.fromEntries(TabCategories.usage.map((e) => MapEntry(e, [])));

        Map<String, List<Product>> headingItems =
            items.fold(allRecovery, (recovery, element) {
          if (!recovery.containsKey(element.usage)) {
            return recovery;
          }

          return recovery
            ..update(element.usage, (value) => value..add(element));
        });
        productList = headingItems;

        // print("headingItems: $headingItems");
        return headingItems.entries
            .map((e) => ProductsInHeading(e.key, e.value..sort()))
            .toList()
              ..sort();
        break;
      case FilterTabs.Categories:
        // usage might be wrong, I'm not sure
        final Map<String, List<Product>> allCategories = Map.fromEntries(
            TabCategories.prodCategory.map((e) => MapEntry(e, [])));

        Map<String, List<Product>> headingItems =
            items.fold(allCategories, (categories, element) {
          if (!categories.containsKey(element.productCategory)) {
            return categories;
          }

          return categories
            ..update(element.productCategory, (value) => value..add(element));
        });

        // print("headingItems: $headingItems");
        productList = headingItems;

        return headingItems.entries
            .map((e) => ProductsInHeading(e.key, e.value..sort()))
            .toList()
              ..sort()
              ..where((e) => e.products.length != 0);
        break;

      case FilterTabs.All:
        return TabCategories.all
            .map((e) => ProductsInHeading(e, items))
            .toList();
    }
    throw UnsupportedError("Unsupported tab type");
  }
List\u获取产品标题(列表项){
开关(已选择的选项卡){
外壳过滤器ABS.手感:
最终地图所有的感觉=
Map.fromEntries(TabCategories.feeling.Map((e)=>MapEntry(e,[]));
地图标题项目=
物品。折叠(所有感觉,(感觉,元素){
if(!features.containsKey(element.effect)){
回报感情;
}
回馈感情
…更新(element.effect,(value)=>value..add(element));
});
productList=标题项;
打印(“标题项目:$headingItems”);
返回标题items.entries
.map((e)=>ProductsInHeading(e.key,e.value..sort())
托利斯先生()
…排序()
…式中((e)=>e.products.length!=0);
打破
外壳过滤器选项卡记录:
建议使用最终地图=
Map.fromEntries(recCategories.Map((e)=>MapEntries(e,[]));
地图标题项目=
物品。折叠(所有推荐物品,(感觉、元素){
if(!feeling.containsKey(element.effect)){
回归感;
}
回归感
…更新(recCategories.toString(),(value)=>value..add(element));
});
productList=标题项;
打印(“标题项目:$headingItems”);
返回标题items.entries
.map((e)=>ProductsInHeading(e.key,e.value..sort())
托利斯先生()
…排序()
…式中((e)=>e.products.length!=0);
打破
箱体过滤器制动安全阀:
//用法可能是错误的,我不确定
最终地图恢复=
Map.fromEntries(TabCategories.usage.Map((e)=>MapEntry(e,[]));
地图标题项目=
物品。折叠(全部回收,(回收,元素){
if(!recovery.containsKey(element.usage)){
回报回收;
}
回收率
…更新(element.usage,(value)=>value..add(element));
});
productList=标题项;
//打印(“标题项目:$headingItems”);
返回标题items.entries
.map((e)=>ProductsInHeading(e.key,e.value..sort())
托利斯先生()
…排序();
打破
案例过滤器选项卡。类别:
//用法可能是错误的,我不确定
最终映射allCategories=Map.fromEntries(
TabCategories.prodCategory.map((e)=>MapEntry(e,[]));
地图标题项目=
项目.折叠(所有类别,(类别,元素){
如果(!categories.containsKey(element.productCategory)){
退货类别;
}
退货类别
…更新(element.productCategory,(value)=>value..add(element));
});
//打印(“标题项目:$headingItems”);
productList=标题项;
返回标题items.entries
.map((e)=>ProductsInHeading(e.key,e.value..sort())
托利斯先生()
…排序()
…式中((e)=>e.products.length!=0);
打破
外壳过滤器选项卡。全部:
返回TabCategories.all
.map((e)=>产品标题(e,项目))
.toList();
}
抛出UnsupportedError(“不支持的选项卡类型”);
}
我不知道如何正确地迁移它。请帮忙