Dart Multiple Constructors

If you already used a constructor with params in the project and now you figured out that you need some no params default constructor you can add an empty constructor.

class User{
String name;

   User({this.name}); //This you already had before
   User.empty(); //Add this later 
}

If your class uses final parameters the accepted answer will not work. This does:

class Player {
  final String name;
  final String color;

  Player(this.name, this.color);

  Player.fromPlayer(Player another) :
    color = another.color,
    name = another.name;
}

You can only have one unnamed constructor, but you can have any number of additional named constructors

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);

This constructor can be simplified

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

to

  Player(this._name, this._color);

Named constructors can also be private by starting the name with _

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

  Player._foo();
}

Constructors with final fields initializer list are necessary:

class Player {
  final String name;
  final String color;

  Player(this.name, this.color);

  Player.fromPlayer(Player another) :
    color = another.color,
    name = another.name;
}

Tags:

Dart

Flutter