🐳Flutter

[Flutter]플러터 StatefulWidget Life Cycle 정리

DevJiun 2021. 11. 10. 23:46

createState

위젯을 생성

initState

최초 생성 때 한번만 실행

초기화 할 땐 이곳에서 추천

context가 없음

didChangeDependencies

최초 생성 때 한번

context에 접근이 가능

ex) provider, device해상도

Widget build

상태변화가 있을 때 호출

부모 위젯에서 업데이트 됐을 때 didChangeDependencies메서드 후 호출 됌

앱의 퍼포먼스가 떨어질 수 있기 때문에 주의

setState (@override)

상태가 바뀔 때 마다 호출.

앱 위젯이 마운트 됐을 때만 호출이 가능

if (mounted) ⇒ 로 체크 가능 안전성 증가

if (mounted) super.setState(fn);

didUpdateWidget

oldWidget(이전 상태의 나 자신)을 인자로 받게되어있음

변경 된 상태에 대한 추가적인 로직이 작성 가능

dispose

위젯이 사용되지 않을 때

사용되었던 것들이 영구적으로 삭제가 필요할 때

메모리 누수를 발생시켜서 앱의 퍼포먼스가 점점 떨어질 수 있으니 dispose를 습관화

ex)위젯에서 사용했던 컨트롤러들