민프
[Flutter] StatefulWidget의 생명주기(lifecycle)를 알아보자 본문
StatefulWidget의 생명주기를 알아보자
StatefulWidget위젯은 정보가 업데이트 됨에 따라 UI도 변경되게 되는데 생명주기가 어떻게 될까?
근데 원초적인 질문부터 해보자면
생명주기를 왜 알아야할까? 인데
여러 프레임워크, 라이브러리를 사용할 때 생명주기를 모른다면
어느 부분에서 최적화를 해야만 서비스가 나아지는지 모른다는 것이다.
쉽게 말해
어느 타이밍에 무언가를 불러와야하고, 업데이트 해야 하는지를 알아야 하는데
그 타이밍이 바로 생명주기라는 것이다.
그럼 본론으로 Flutter - StatefulWidget의 생명주기는 무엇일까?
StatefulWidget - lifecycle
공식 홈페이지에서 심플하게 나타낸게 있는데 아래와 같다.
- createState() : Flutter에서 빌드 시 StatefulWidget을 호출하게 되고, createState()를 최초 호출하게 된다.
- mounted == true : createState()가 생성되고 나서 mounted == true일 경우 BuildContext가 할당된다.
- initState() : 위젯이 생성될 때 호출되는 첫 번째 메서드 이고, 단 한번만 호출이 된다.
이 메서드에서 @override를 사용해서 API에서 온 데이터를 업데이트 해주거나 하기에 좋은 단계이다.
코드 순서에서 initState 메서드가 항상 build 메서드보다 먼저 호출되어야한다. - didChangeDependencies() : initState위젯이 처음 빌드된 직후 호출된다.
만약 의존하는 위젯 or 개체가 호출될 때마다 호출이 된다.
이건 상속 위젯이 업데이트될 때 같이 업데이트가 되어야하는 경우에 유용하다 - build()
- didUpdateWidget()
- setState() : 프레임워크에 "데이터가 변경됨, build context를 다시 빌드해야함"을 알리는데 사용된다.
- deactivate() : 거의 사용되지는 않고, deactive() 상태는 트리가 제거될 때 호출이 된다.
- dispose() : 개체가 제거될 때 호출되고, 모든 애니메이션이나 스트림 등을 구독 취소하고 싶을때 여기에서 사용된다.
- mounted == false
위 내용을 아래 다이어그램으로 표현해봤는데 이해에 도움이 되셨으면 좋겠네요
참고링크
https://flutterbyexample.com/lesson/stateful-widget-lifecycle
'[Flutter]' 카테고리의 다른 글
[Flutter] Stack과 Align 같이 사용하기 [기록] (0) | 2023.08.09 |
---|---|
[Flutter] Flutter에서 Font_Awesome 사용하기 (0) | 2023.08.09 |
[Flutter] BuildContext란 무엇일까? (0) | 2023.08.08 |
[Flutter] use const with the constructor to improve performance... 는 왜 나오는걸까? (VSCODE 설정 변경하기) (0) | 2023.08.08 |
[Flutter] const, final의 공통점과 차이점 (feat. Runtime, Compile Time) (0) | 2023.08.08 |
Comments