Flutter

StatefulWidget 라이프사이클

hamiric 2024. 12. 22. 23:39

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