名前付き引数を利用することでゲッターを省略できる
class Person {
final String name;
final int age;
Person({
required this.name,
required this.age,
});
}
// 使用
var person = Person(name: "太郎", age: 25);
print(person.name);
final String name
:フィールド宣言
this.name
:コンストラクタ引数
return
を書かなくてもインスタンスが作れるが、factory
では明示的にreturn
する必要があるclass MyClass {
final String name;
final String age;
MyClass({
required this.name,
required this.age,
});
factory MyClass.fromJson(Map<String, Int> json) {
return MyClass(
name: json['name'],
age: json['age'],
);
}
}
ClassName.name()
とすることで、任意の名前をつけて作れるコンストラクタclass Point {
int x, y;
Point(this.x, this.y); // 通常のコンストラクタ
Point.origin() : x = 0, y = 0; // 名前付きコンストラクタ
}
void main() {
var p1 = Point(3, 5); // 通常コンストラクタ
var p2 = Point.origin(); // 名前付きコンストラクタ
}
class User {
String name;
int age;
User(this.name, this.age); // 普通のコンストラクタ
User.anonymous() : name = '匿名', age = 0; // 名前付きコンストラクタ
}