728x90
Flutter에서,
기본적으로 사용하는 Constructor말고, 이름을 지정해서 사용하는 constructor를 NamedContructor라고 한다.
class Point {
double x, y;
Point(this.x, this.y);
Point.origin() {
x = 0;
y = 0;
}
}
void main() {
var point1 = Point(2, 3); // 기본 생성자로 객체 생성
var point2 = Point.origin(); // Named Constructor로 객체 생성
print('point1: (${point1.x}, ${point1.y})'); // 출력: point1: (2.0, 3.0)
print('point2: (${point2.x}, ${point2.y})'); // 출력: point2: (0.0, 0.0)
}
반면에, Factory Constructor는 생성자 호출 결과가 새로운 인스턴스가 아닐 수도 있다는 것이 Named Constructor와 다르다. Factory Constructor는 클래스의 인스턴스를 생성하는 것 외에도, 복잡한 로직을 통해 새로운 객체를 생성하거나, 기존 객체를 재활용하여 리턴할 수도 있다고 한다.
class Rectangle {
int width, height;
Rectangle(this.width, this.height);
factory Rectangle.square(int size) {
return Rectangle(size, size);
}
}
void main() {
var rect1 = Rectangle(2, 3);
var rect2 = Rectangle.square(5);
print('rect1: (${rect1.width}, ${rect1.height})'); // 출력: rect1: (2, 3)
print('rect2: (${rect2.width}, ${rect2.height})'); // 출력: rect2: (5, 5)
}
기존의 constructor에서는 자기자신 Rectangle을 그대로 객체로 가져올 수는 없지만, factory constructor에서는 자기자신 객체를 contructor에서 넣어줄 수 있다.
728x90
'개발 > Flutter' 카테고리의 다른 글
drag할 때 keyboard 가리기 (0) | 2023.04.27 |
---|---|
GetX로 상태관리하기 (0) | 2023.04.27 |
flutter 축하하는 화면 (Confetti example) (0) | 2023.04.21 |
flutter에서 reward 줄 때 사용할만한 위젯 리스트 (1) | 2023.04.21 |
mixin 설명 영상 (0) | 2023.04.15 |