StatelessWidget 과 StatefulWidget 은 불변이며 화면이 다시 빌드될 때마다 매번 생성되므로 생명 주기를 논할 필요가 없다!!
단, State는 한 번 생성된 후 메모리에 유지되므로 생명 주기를 가진다.
created, dirty, clean, defunct 는 상태를 나타낸다. clean 은 state에 의해 화면이 출력되고 있는 정상 상태이며, dirty는 state 화면을 다시 빌드해야 되는 상태를 의미 한다.
initState()
최초 1회 실행.
didChangeDependencies()
initState() 함수가 호출된 후에 이어서 호출된다. 즉, State가 생성될 때 자동으로 호출된다. 단, 반복으로 호출되는 경우도 있는데 위젯 트리에서 상위 위젯의 상태 데이터를 하위 위젯에 전달해야 할 때 이다.(InheritedWidget 이나 Provider 를 사용한다.)
InheritedWidget 이나 Provider 로 관리하는 상위 위젯의 상태 데이터가 변경될 때 하위 위젯의 didChangeDependencies()가 자동으로 호출되어 이 함수에서 상위 위젯의 변경된 상태 데이터를 이용할 수 있게 해준다.
didUpdateWidget()
상위 위젯이 다시 빌드 되는 경우 하위 위젯은 다시 생성되고 StatefulWidget의 State 객체가 메모리에 유지되면서 이용되는 것이다.
따라서 State 에서는 자신과 연결된 StatefulWidget이 다시 생성되는 순간을 감지해야 할 수도 있다. 이때 State의 didUpdateWidget()이 자동으로 호출된다.
즉, State의 didUpdateWidget()이 호출되었다는 것은 상위 위젯에서 State와 연결된 StatefulWidget이 다시 생성 되었음을 의미한다.
build()
화면을 출력하는 위젯을 반환한다. 즉, 화면을 구성할 때 호출되는 함수이다.
- 최초 호출
- setState() 함수에 의한 호출
- didUpdateWidget() 함수에 의한 호출 이 있다.
didUpdateWidget()은 상위 위젯에서 상태가 변경되어 화면을 다시 빈드하려고 자신과 연결된 StatefulWidget을 다시 생성한 순간에 호출된다.
dispose()
상태 객체를 소멸할 때 자동으로 호출된다.
http://www.yes24.com/Product/Goods/117206541
'# 02 > Flutter' 카테고리의 다른 글
[Flutter] 면접 질문! (0) | 2023.03.19 |
---|---|
[Flutter] BuildContext 객체와 위젯 키 (0) | 2023.03.12 |
[Flutter] StatefulWidget 의 State (0) | 2023.03.12 |
[Flutter] 위젯 트리 (0) | 2023.03.12 |
[Flutter] 플러터 아키텍처와 특징 (0) | 2023.03.05 |