Factory Constructor
Factory Constructor 는 특이하게도 메서드처럼 바디가 있음
무조건 현재 클래스의 인스턴스를 반환해줘야 함
void main(){
final parent = Parent(id: 1);
print(parent.id);
final child = Child(id: 3);
print(child.id);
}
class Parent {
final int id;
Parent({
required this.id,
});
factory Parent(int id) {
return Parent(id: id); // error
}
}
class Child extends Parent {
Child({
required super.id,
});
}
하지만 에러가 나는 것을 볼 수 있다.
같은 이름의 Consturctor 는 생성할 수 없기 때문이다.
그래서 named Constructor 로 생성해줘야 한다.
다음처럼 수정해보자.
class Parent {
final int id;
Parent({
required this.id,
});
factory Parent.fromInt(int id) {
return Parent(id: id); // success!
}
}
factory 만 빼면 named Constructor 와 비슷하다. (물론 바디 빼고)
void main(){
final parent = Parent(id: 1);
final parent2 = Parent.fromInt(3); // positional parameter 임
}
특이점
내 현재의 클래스를 상속한 클래스의 인스턴스를 만들 수 있다는 점이 특이하다
위와 같이 Child 클래스의 인스턴스인 것을 확인할 수 있다!
'🐦 Flutter' 카테고리의 다른 글
[Flutter] RenderFlex children have non-zero flex but incoming height constraints are unbounded (1) | 2023.02.03 |
---|---|
[Dart] firstWhere (0) | 2022.12.11 |
[Dart] 슈퍼 이니셜라이저 (0) | 2022.12.11 |
[Flutter] 푸시 알람 눌렀을 때 다른 페이지로 이동 (4) | 2022.11.17 |
[Flutter] Statusbar color 화면마다 다르게 적용 (0) | 2022.09.26 |