我使用JsonSerializable从 json 生成了 Item 模型实例,我得到了这个生成的代码。但是在我添加了双类型属性(价格)后它不会返回一个项目。没有它它工作
Item _$ItemFromJson(Map<String, dynamic> json) {
return Item()
..id = json['id'] as int?
..kitchenId = json['kitchen_id'] as int?
..kitchen = json['kitchen'] == null
? null
: Kitchen.fromJson(json['kitchen'] as Map<String, dynamic>)
..name = json['name'] as String?
..image = json['image'] as String?
// This line returns null
..price = (json['price'] as num?)?.toDouble();
}
然后我尝试通过更改双重解析来修复它并成功
Item _$ItemFromJson(Map<String, dynamic> json) {
return Item()
..id = json['id'] as int?
..kitchenId = json['kitchen_id'] as int?
..kitchen = json['kitchen'] == null
? null
: Kitchen.fromJson(json['kitchen'] as Map<String, dynamic>)
..name = json['name'] as String?
..image = json['image'] as String?
// Changed this line
..price = double.parse(json['price']);
}
这是我的模型
@JsonSerializable()
class Item {
@JsonKey(name: 'id')
int? id;
@JsonKey(name: 'kitchen_id')
int? kitchenId;
@JsonKey(name: 'kitchen')
Kitchen? kitchen;
@JsonKey(name: 'name')
String? name;
@JsonKey(name: 'image')
String? image;
@JsonKey(name: 'price')
double? price;
Item();
factory Item.fromJson(Map<String, dynamic> json) => _$ItemFromJson(json);
Map<String, dynamic> toJson() => _$ItemToJson(this);
@override
String toString() {
return '{name: $name}';
}
}
但是当我运行 flutter pub run build_runner build 时,它被重置了:\ 我需要再次修复它。
有什么我错过的吗?每次运行 build_runner 时不修复此代码会很棒!:) 泰
PS:我的调试控制台中没有错误或任何东西