1. 위젯 클래스 (Widget Class)
이름 : 보통 클래스명 그대로 (MyWidget)
역할 : 위젯은 설계도, 외부에서는 받는 설정값(final 변수)을 저장하며, 실제 데이터가 변해도 이 클래스 인스턴스는 불변(Immutable)의 특성을 갖는다.
핵심 코드 : extends StatefulWidget을 상속받고 createState()를 구현한다.
class MyWidget extends StatefulWidget {
final String title;
const MyWidget({super.key, required this.title});
@override
State<MyWidget> createState() => _MyWidget();
}
2. 상태 클래스 (State Class)
이름 : 보통 언더스코어(_)를 붙여서 private 클래스로 만든다. (_MyWidget)
역할 : 위젯의 핵심기능, 시간이 지남에 따라 변하는 데이터(상태)를 보관하고, setState()가 호출될 때마다 UI를 다시 그리는 build 메소드를 가지고 있다.
핵심 코드 : extends State<T>를 상속 받는다.
class _MyWidget extends State<MyWidget> {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Text(widget.title);
}
}
Widget Life Cycle : https://blog.daonelab.com/post/46/1864/