본문 바로가기

# 02/Flutter

[Flutter] State의 생명 주기

반응형

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

 

Do it! 깡샘의 플러터 & 다트 프로그래밍 - YES24

‘깡샘’으로 유명한 앱 개발 전문가의 명성 그대로!다트 핵심 문법을 익히고 플러터로 모바일 앱을 만들어 보자!매년 수백 명의 개발자를 양성하는 IT 전문 강사이자 안드로이드 베스트셀러의

www.yes24.com

 

 

반응형

'# 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