Search
🧻

#005 #플러터 StatefulWidget위젯의 생명주기

 개요

Flutter 위젯은 상태(State)요소(Element)로 구성된다. 상태를 가지는 위젯은 StatefulWidget을 상속하고, 상태를 가지지 않는 위젯은 StatelessWIdget을 상송한다.
StatefulWidget의 경우, 상태 관리와 생명주기 메서드를 통해 위젯의 상태 변화에 대응할 수 있다. 주요 생명주기는 다음과 같다.

 createState()

위젯의 상태를 생성한다.
위젯이 처음 생성 될 때 한 번 호출된다.

 initState()

상태 객체가 생성되고 난 후 호출된다.
위젯이 위젯 트리에 추가되기 전에 호출되며, 한 번만 실행된다.
이 단계에서는 context를 사용할 수 있지만, context를 통해 InheriredWidget에 접근하면 안된다.

 didChangeDependencies()

initState() 다음에 호출된다.
위젯의 의존하는 InheriedWidget이 변경되었을 때 호출된다.
처음 생성 시에도 호출되며, 이때 context를 통해 InheritedWidget에 안전하게 접근할 수 있다.

 build(BuildContext context)

위젯의 UI를 그리는 메서드이다.
위젯이 처음 빌드되거나, 상태가 변경되어 재빌드될 때마다 호출된다.

 didUpdatedWidget(covariant OldWidget oldWidget)

부모 위젯이 위젯을 재빌드하여 위젯의 설정이 변경되었을 때 호출된다.
예를 들어, 부모로부터 전달받은 widgetprops가 변경되었을 때이다.

 setState(VoidCallback fn)

상태를 변경하고, 위젯을 재빌드하기 위해 호출한다.
fn 콜백 안에서 상태를 변경하고, Flutter 는 변경된 상태를 반영하여 build() 메서드를 호출한다.

 deactivate()

위젯이 위젯 트리에서 제거될 때 호출된다.
재배치(Reparenting) 과정에서도 호출될 수 있다.

 dispose()

위젯이 완전히 소멸되어 더 이상 사용되지 않을 때 호출된다.
리소스 해제, 컨트롤러 종료 등을 수행한다.