인수를 받는 명시적인 생성자를 통하여 인스턴스를 생성한다.
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