Dart如何基于VehicleModel基类创建TruckModel子类并解决继承报错
问题原因
你遇到的两个报错/警告原因如下:
- 构造函数报错:
model、licenseplate是父类VehicleModel声明的属性,子类TruckModel没有重复定义这两个字段,不能在子类构造函数中用this.的方式接收这两个参数,只需将参数直接透传给父类构造函数即可。 - toJson警告:子类的
toJson方法覆盖了父类的同名方法,按照Dart语法规范需要添加@override注解标注重写关系。
修正后的完整TruckModel代码
import 'dart:convert'; import 'package:pathofmyapp/models/vehicle_model.dart'; TruckModel truckModelFromJson(String str) => TruckModel.fromJson(json.decode(str)); String truckModelToJson(TruckModel data) => json.encode(data.toJson()); class TruckModel extends VehicleModel { TruckModel({ // 直接声明参数,不用加this. String? model, String? licenseplate, this.loadingcapacity, }) : super(model: model, licenseplate: licenseplate); String? loadingcapacity; factory TruckModel.fromJson(Map<String, dynamic> json) => TruckModel( model: json["model"], licenseplate: json["licenseplate"], loadingcapacity: json["loadingcapacity"], ); // 添加@override注解,同时复用父类toJson逻辑避免重复代码 @override Map<String, dynamic> toJson() { final Map<String, dynamic> baseData = super.toJson(); baseData['loadingcapacity'] = loadingcapacity; return baseData; } }
内容的提问来源于stack exchange,提问作者David L
相关产品推荐
相关产品推荐

