一尘不染

Dart多个构造函数

flutter

真的不可能在dart中为一个类创建多个构造函数吗?

在我的播放器类中,如果我有此构造函数

Player(String name, int color) {
    this._color = color;
    this._name = name;
}

然后,我尝试添加此构造函数:

Player(Player another) {
    this._color = another.getColor();
    this._name = another.getName();
}

我收到以下错误:

默认构造函数已经定义。

我不是通过创建带有一堆不需要的参数的构造函数来寻找解决方法。

有解决这个问题的好方法吗?


阅读 1403

收藏
2020-08-13

共1个答案

一尘不染

您只能有一个 未命名的 构造函数,但可以有任意数量的其他已 命名的
构造函数

class Player {
  Player(String name, int color) {
    this._color = color;
    this._name = name;
  }

  Player.fromPlayer(Player another) {
    this._color = another.getColor();
    this._name = another.getName();
  }  
}

new Player.fromPlayer(playerOne);

该构造函数可以简化

  Player(String name, int color) {
    this._color = color;
    this._name = name;
  }

  Player(this._name, this._color);

命名构造函数也可以通过以 _

class Player {
  Player._(this._name, this._color);

  Player._foo();
}

具有final字段初始值设定项列表的构造函数是必需的:

class Player {
  final String name;
  final String color;

  Player(this.name, this.color);

  Player.fromPlayer(Player another) :
    color = another.color,
    name = another.name;
}
2020-08-13