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/