dart上继承类的copyWith()方法

nx7onnlm  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(238)

我想为我的类实现copyWith()方法。由于它的类被禁止,我得到了错误:
要重写的成员。

我的基本模型

class BaseData {
  int id;
  String? createdAt, updatedAt;

  BaseData({this.id = 0, this.createdAt, this.updatedAt});
  BaseData copyWith(
      {int? id, String? createdAt, String? updatedAt}) {
    return BaseData(
        CreatedAt: createdAt ?? this.createdAt,
        ID: id ?? this.id,
        UpdatedAt: updatedAt ?? this.updatedAt);
  }
}

我还有另一个扩展到BaseData模型的类

class QcData extends BaseData{
  String name;
  QcData ({this.name =""});

  @override
  QcData copyWith({
  String? name
  }){
    return QcData(name: name ?? this.name);
 }
}

如何为我的模型类创建copyWith()方法?
先谢了。

ttvkxqim

ttvkxqim1#

继承意味着当您扩展或实现基类时,类成员的定义应该保持不变,在您的情况下,通过执行以下操作:

@override
   QcData copyWith({
   String? name
  }){
     return QcData(name: name ?? this.name);
 }

这个方法声明与BaseData的不同,因为它们采用不同的参数集,你应该保持参数与BaseData相同,所以你的代码应该是这样的才能工作:

class QcData extends BaseData {
  String name;
  QcData({this.name = ""});

  @override
  QcData copyWith({
    int? id,
    String? createdAt,
    String? updatedAt,
  }) {
    return QcData(name: name ?? this.name);
  }
}

相关问题