인수를 받는 명시적인 생성자를 통하여 인스턴스를 생성한다.

class User {
  String name;
  String nickname;
  int age;
  String job;
  
  User(this.name, this.nickname, this.age, this.job);
}

void main() {
  User u = User('A', 'AA', 12, 'AAA');
  
  printUserInfo(u);
}

void printUserInfo(User u)
{
  print("User's name is ${u.name}.");
  print("User's nickname is ${u.nickname}.");
  print("User's age is ${u.age}.");
  print("User's job is ${u.job}.");
  print("\n");
}
User's name is A.
User's nickname is AA.
User's age is 12.
User's job is AAA.

 

 

Using Named arguments

Named parameters의 작동방식과 같다.

Dart considers all variables non-nullable. : Compile에서 부터 오류발생

class User {
  String name;
  String nickname;
  int age;
  String job;
  
  User({this.name, this.nickname, this.age, this.job});
}

void main() {
  User u = User(name:'A', nickname:'AA', age:12, job:'AAA');
  
  printUserInfo(u);
}

void printUserInfo(User u)
{
  print("User's name is ${u.name}.");
  print("User's nickname is ${u.nickname}.");
  print("User's age is ${u.age}.");
  print("User's job is ${u.job}.");
  print("\n");
}

 

default value 지정 : 정상작동

class User {
  String name;
  String nickname;
  int age;
  String job;
  
  User({this.name = 'Z', this.nickname = 'ZZ', this.age = 10, this.job = 'ZZZ'});
}

void main() {
  User u = User(name:'A', nickname:'AA');
  
  printUserInfo(u);
}

void printUserInfo(User u)
{
  print("User's name is ${u.name}.");
  print("User's nickname is ${u.nickname}.");
  print("User's age is ${u.age}.");
  print("User's job is ${u.job}.");
  print("\n");
}
User's name is A.
User's nickname is AA.
User's age is 10.
User's job is ZZZ.

 

required 지정 : 정상작동

class User {
  String name;
  String nickname;
  int age;
  String job;
  
  User({required this.name, required this.nickname, required this.age, required this.job});  // Required named parameter can't have a default value.
}

void main() {
  User u = User(name:'A', nickname:'AA', age:17, job:'AAAA');
  
  printUserInfo(u);
}

void printUserInfo(User u)
{
  print("User's name is ${u.name}.");
  print("User's nickname is ${u.nickname}.");
  print("User's age is ${u.age}.");
  print("User's job is ${u.job}.");
  print("\n");
}
User's name is A.
User's nickname is AA.
User's age is 17.
User's job is AAAA.

 

nullable types 지정 : 정상작동

class User {
  String? name;
  String? nickname;
  int? age;
  String? job;
  
  User({this.name, this.nickname, this.age, this.job});
}

void main() {
  User u = User(name:'A', nickname:'AA', age:12, job:null);
  
  printUserInfo(u);
}

void printUserInfo(User u)
{
  print("User's name is ${u.name}.");
  print("User's nickname is ${u.nickname}.");
  print("User's age is ${u.age}.");
  print("User's job is ${u.job}.");
  print("\n");
}
User's name is A.
User's nickname is AA.
User's age is 12.
User's job is null.

 

 

 

 

https://dart.dev/language/constructors#generative-constructors