- StatelessWidget은 복잡한 LifeCycle을 가지고 있지 않는다. rebuild 될때 Constructor, build가 순차적으로 호출된다.
- Constructor
- initState
- didChangeDependencies
- initState 호출 직후 한번만 호출 된다.
- InheritedWidget이나 Provider를 사용하는 경우 →InheritedWidget이나 Provider의 내용이 변경될 때 호출 된다. 즉, 부모 위젯이나, 자기 자신의 상태가 변경될 때는 호출되지 않지만, 해당 위젯이 참조(Depedency)하는 위젯(InheritedWidget이나 Provider)이 변경시 didChangeDependencies 함수가 호출 된다.
- didUpdateWidget
- 부모 위젯에 의해 rebuild 가 필요한 경우, build 함수 호출 직전에 호출된다.
(ex. 부모 위젯의 변경으로 인해,애니메이션을 다시 실행할 필요가 있을 때)
- build
- deactivate
- deactivate 함수는 상태(State) 객체가 트리에서 제거될 때 호출 된다.
(ex. GlobalKey를 사용하여 현재 위젯을 위젯 트리에 특정 위치로 이동시키면, 해당 위젯의 상태 객체가 변경되므로 deactivate가 실행된다.)
- dispose
- 위젯 객체가 위젯 트리에서 영구적으로 제거될 때 호출된다.
deactivate 가 먼저 호출되어 상태 객체가 제거되었음을 알리고, 이후 dispose가 호출되어 위젯 객체가 삭제되었음을 알립니다.
호출순서
- Stateful 위젯이 생성될 때:
Constructor
> initState
> didChangeDependencies
> build
- setState가 호출되었을 때:
build
- InheritedWidget 또는 Provider의 값이 변경되었을 때:
didChangeDependencies
> build
- 부모 위젯으로부터 전달받는 값이 변경되었을 때:
didUpdateWidget
> build
- 상태 객체가 제거되었을 때:
deactivate
> build
- 위젯 객체가 제거될 때:
deactivate
> dispose