StatefulWidget 라이프 사이클
위젯 생성 단계
- createState
StatefulWidget이 처음 생성될 때 호출되어, State 객체를 생성하는 단계
- initState
State 객체가 생성된 후 최초로(한번만) 호출하는 단계. 주로 초기화 작업을 수행하는데 사용된다.
이때에는 위젯이 BuildContext나 위젯트리에 연결되지 않은 초기화 상태이므로 해당 관련 작업은 수행할 수 없다.
위젯 빌드 및 화면 갱신 단계
- didChangeDependencies
initState 이후에 호출되며, InheritedWidget으로부터 참조한 데이터가 변경되었을때마다 다시 호출되는 단계.
즉, 다른 위젯에서 해당 위젯에 영향을 미치는 작업이 발생했을때 호출되는 단계라고 이해하면 편하다.
** InheritedWidget 은 플러터에서 위젯 트리내의 위젯들간에 데이터를 공유하기 위해 설계된 특별한 종류의 위젯으로써, 부모위젯과 자식 위젯들간의 데이터를 효율적으로 공유할 수 있게 해주는 위젯
- build
위젯의 UI를 렌더링하는데 사용되는 단계.
위젯이 화면에 처음 표시될때(최초실행시), setState가 호출되었을때, 종속성 변경이 발생했을때(didChangeDependencies 가 호출되었을때) 호출되서 UI를 새로 그린다.
상태 변경단계
- setState
build 메서드를 다시 호출하여 화면을 갱신하는 단계.
일반적으로 상태를 변경하는 로직을 넣어, 개발자가 명시적으로 사용하는 방식.
위젯 업데이트 단계
- didUpdateWidget
부모 위젯이 해당위젯을 갱신할때 호출되는 단계. build 메서드를 다시 호출한다.
즉, 부모위젯에서 전달받은 속성이 변경되었을때 호출되어 위젯을 재빌드 시키는 것이라고 할 수 있다.
[didChangeDependencies 와 didUpdateWidget의 차이점]
didChangeDependencies는 위젯 트리에 의한 종속성 변경이 일어났을때 호출되는것이라면,
didUpdateWidget은 부모위젯에서 넘겨받은 상태의 변경이 일어났을때 호출되는 것이라는 것이다.
종료 단계
- deactivate
위젯이 트리에서 제거될 때 호출되는 단계. State객체를 비활성화 한다.
일반적으로 State가 다시 재사용될 가능성이 있는 경우 사용된다.
- dispose
위젯이 완전히 파괴될 때 호출되는 단계.
'Flutter' 카테고리의 다른 글
앱 이름, 앱 아이콘, 패키지명 바꾸기 (0) | 2024.12.23 |
---|---|
Isolate (0) | 2024.12.23 |
TensorFlow 사용하기 (YOLO v.8) (0) | 2024.12.20 |
알림 보내기 (LocalNotification 라이브러리) (0) | 2024.12.20 |
반응형 UI (0) | 2024.12.19 |