You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:24:04