Ist es wirklich nicht möglich, mehrere Konstruktoren für eine Klasse in Dart zu erstellen?
in meiner Spielerklasse, wenn ich diesen Konstruktor habe
Player(String name, int color) {
this._color = color;
this._name = name;
}
Dann versuche ich diesen Konstruktor hinzuzufügen:
Player(Player another) {
this._color = another.getColor();
this._name = another.getName();
}
Ich erhalte folgende Fehlermeldung:
Der Standardkonstruktor ist bereits definiert.
Ich bin nicht auf der Suche nach einer Problemumgehung, indem ich einen Konstruktor mit einer Reihe nicht erforderlicher Argumente erstellt habe.
Gibt es einen schönen Weg, um das zu lösen?
Sie können nur einen unbenanntenKonstruktor haben, aber Sie können eine beliebige Anzahl zusätzlicher named - Konstruktoren haben.
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);
Dieser Konstruktor kann vereinfacht werden
Player(String name, int color) {
this._color = color;
this._name = name;
}
zu
Player(this._name, this._color);
Benannte Konstruktoren können auch privat sein, indem Sie den Namen mit _
beginnen.
class Player {
Player._(this._name, this._color);
Player._foo();
}
Wenn Sie bereits einen Konstruktor mit Params im Projekt verwendet haben und nun herausgefunden haben, dass Sie keinen Standardkonstruktor für Params benötigen, können Sie einen leeren Konstruktor hinzufügen.
class User{
String name;
User({this.name}); //This you already had before
User.empty(); //Add this later
}
Wenn Ihre Klasse endgültige Parameter verwendet, funktioniert die akzeptierte Antwort nicht. Das macht:
class Player {
final String name;
final String color;
Player(this.name, this.color);
Player.fromPlayer(Player another) :
color = another.color,
name = another.name;
}