代码之家  ›  专栏  ›  技术社区  ›  Enrico Roselino

Dart将List<Model>转换为另一个List<another>

  •  0
  • Enrico Roselino  · 技术社区  · 1 年前

    修复:修复了非DTO模型中的导入路径,谢谢大家。哦,我的天哪,linter仍然使用CTRL+左键单击将我导航到文件

    大家好,今天好。

    dart给出了这个奇怪的错误,我只是将我的dto从API转换为我的模型。

    var salesCategoriesDto =
            dataList.map((i) => SalesDailyCategoryResponseDto.fromJson(i)).toList();
    
    var salesCategories = salesCategoriesDto
            .map((i) => SalesDailyCategory.fromDto(salesCategoryDto: i))
            .toList();
    

    传递迭代对象时出错
    错误跟踪消息 迭代项给出的错误就好像“不能通过或类型错误”。我是不是错过了什么?

    销售每日类别响应Dto.dart

    class SalesDailyCategoryResponseDto {
      String? lineGroup;
      int? daySales;
      int? monthSales;
      int? yearSales;
      int? totalSales;
    
      SalesDailyCategoryResponseDto._({
        required this.lineGroup,
        required this.daySales,
        required this.monthSales,
        required this.yearSales,
        required this.totalSales,
      });
    
      factory SalesDailyCategoryResponseDto.fromJson(Map<String, dynamic> jsonObject) {
        return SalesDailyCategoryResponseDto._(
          lineGroup: jsonObject["LineGroup"],
          daySales: jsonObject["DaySales"],
          monthSales: jsonObject["MonthSales"],
          yearSales: jsonObject["YearSales"],
          totalSales: jsonObject["TotalSales"],
        );
      }
    }
    

    SalesDailyCategory.dart

    class SalesDailyCategory {
      String lineGroup;
      int daySales;
      int monthSales;
      int yearSales;
      int totalSales;
    
      SalesDailyCategory._({
        required this.lineGroup,
        required this.daySales,
        required this.monthSales,
        required this.yearSales,
        required this.totalSales,
      });
    
      factory SalesDailyCategory.fromDto(
              {required SalesDailyCategoryResponseDto salesCategoryDto}) =>
          SalesDailyCategory._(
            lineGroup: salesCategoryDto.lineGroup!,
            daySales: salesCategoryDto.daySales!,
            monthSales: salesCategoryDto.monthSales!,
            yearSales: salesCategoryDto.yearSales!,
            totalSales: salesCategoryDto.totalSales!,
          );
    }
    

    我用的是飞镖3.4.1

    我试着不使用私有构造函数,结果仍然是一样的,而且当使用i上的点时,linter知道它引用了SalesDailyCategoryResponseDto

    错误:无法将参数类型“SalesDailyCategoryResponseDto(其中SalesDailyCatalogyResponse dto是在D:\workcode\redated\lib\features\sales\persentation\dtos\sales_daily_category_response_dto.dart中定义的)”分配给参数类型“sales DailyCategory ResponseD to(其中,SalesDaily分类响应D to是在D:\workcode\redated\lib\features\sales \persentation\dstos\sales_daily_category_response_dto.dart中定义的。)”。(argument_type_not_assignable at[eth_sales_management_system]lib\features\sales\repository\sales_daily_prepository.dart:39)

    文件夹结构

    文件夹中的文件

    1 回复  |  直到 1 年前
        1
  •  -1
  •   manhtuan21    1 年前

    您在不同的文件中有两个SalesDailyCategoryResponseDto类:

    sales_daily_category_response_dto.dart
    
    sales_daily_Category_response_dto.dart
    

    尝试删除这些文件中的重复代码