Flutter _TypeError(类型'List <dynamic>'不是类型'Map <string,dynamic =“”>'的子类型)

时间:2019-03-27 22:50:27

标签: dart flutter

我是陌生的,遇到类型错误。我正在尝试使用json自动序列化。

在进行一些操作之后,看起来就像 enter image description here

这是我尝试从api获取数据的方式

 Future getMyProduct() async {
 final res = await http.get('url');
 final data = json.decode(res.body);
 BaseResponse req = new BaseResponse.fromJson(data);
 return req;

}

我的BaseResponse类看起来像这样

  import 'package:dynamicapp/model/model.dart';
  import 'package:json_annotation/json_annotation.dart';

  part 'response.g.dart';

  @JsonSerializable()
  class BaseResponse extends Object {
    final int id;

final int sellingPrice;
final int totalStock;
final String productName;
final String productDesc;
final List<Image> images;
BaseResponse(this.id, this.sellingPrice, this.totalStock, this.productName,
    this.productDesc, this.images);

factory BaseResponse.fromJson(Map<String, dynamic> json) => _$BaseResponseFromJson(json);






    Map<String, dynamic> toJson() => _$BaseResponseToJson(this);


}

 @JsonSerializable()
 class Image extends Object {
    final int id;
    final String image;
//  final int product_id;

   Image(this.id, this.image);
factory Image.fromJson(Map<String, dynamic> json) => _$ImageFromJson(json);
   Map<String, dynamic> toJson() => _$ImageToJson(this);
}

有人可以帮助我吗?我被困在这里。一直在尝试不同的方法,但没有一个起作用。谢谢。

1 个答案:

答案 0 :(得分:0)

看起来dataList<dynamic>,然后data.map(someFunc).toList()将把每个数据元素传递给someFunc并将其形成返回类型列表的someFunc(您可能想成为BaseResponse)。告诉您someFunc必须是一个接受dynamic并返回BaseResponse的函数。

您想写这样的东西:

  final data = json.decode(res.body);
  List<BaseResponse> responses =
      data.map((j) => BaseResponse.fromJson(j)).toList();