0

我想将获取的数据转换如下,但出现错误并关闭模拟器!我能做些什么?

Map<String, dynamic> responseClassMap = {
'$ResponseCompany': ResponseCompany,//ResponseCompany is class
'$ResponseCompanyDetail': ResponseCompanyDetail, //ResponseCompanyDetail is class
};
for (var item in responseClassMap.entries) {
  if (className == item.key) {
    result = responseData.map((data) => item.value.fromJson(data)).toList();
  }
}

这是类 ResponseCompany.dart

@JsonSerializable()
class ResponseCompany {
final num sales, ...;
...
factory ResponseCompany.fromJson(Map<String, dynamic> json) => _$ResponseCompanyFromJson(json);
...

这是 ResponseCompany.g.dart

ResponseCompany _$ResponseCompanyFromJson(Map<String, dynamic> json) {
  return ResponseCompany(
  );
  ...
}
4

1 回答 1

1

恕我直言item.value.fromJson将无法正常工作。由于 fromJson 是工厂构造函数,并且在 dart 规则中,不能为存储在变量中的类型调用工厂构造函数。(事实上​​,问题是隐藏的,因为您创建了 aMap<string, dynamic>并且 dart 允许dynamic在编译时调用所有内容。)

对于您的具体情况,您可以这样做

Map<String, dynamic> map = {
'$ResponseCompany': (d)=>ResponseCompany.fromJson(d),//ResponseCompany is class
'$ResponseCompanyDetail': (d)=>ResponseCompanyDetail.fromJson(d), //ResponseCompanyDetail is class
};
for (var item in map.entries) {
  if (className == item.key) {
    result = responseData.map((data) => item.value(data)).toList();
  }
}
于 2020-12-09T13:46:29.283 回答