StatefulWidget 위젯의 생명주기를 간단하게 요약해 볼까요?
StatefulWidget 위젯의 생명주기는 아래와 같이 8가지로 구분할 수 있습니다.
createState():
StatefulWidget이 최초로 생성될 때, 먼저 createState() 메서드가 호출됩니다.
이 메서드는 StatefulWidget의 상태를 관리하는 State 객체를 생성합니다.
StatefulWidget은 상태가 변할 수 있는 요소이므로, 이 상태를 관리하는 State 클래스가 필요합니다.
initState():
createState() 메서드가 호출되고 나면, 이어서 initState() 메서드가 호출됩니다.
이 메서드는 State 객체가 초기화될 때 호출되며, 일회성 작업을 수행하는데 주로 사용됩니다.
예를 들어, 초기 데이터 로드나 컨트롤러 초기화 등이 여기에 해당합니다.
didChangeDependencies():
만약 상위 위젯이나 InheritedWidget 등의 종속성이 변경되면, didChangeDependencies() 메서드가 호출됩니다.
이 메서드는 처음 위젯이 생성될 때보다 많이 호출되는데, 이전에 의존성이 변경되었을 때 실행됩니다.
데이터를 가져오거나 업데이트하는데 활용할 수 있습니다.
build():
위의 단계들이 완료되면, Flutter 프레임워크는 build() 메서드를 호출하여 화면을 그립니다.
이 메서드에서는 사용자 인터페이스의 모습을 반환하는 역할을 합니다.
build() 메서드는 매번 상태가 변경될 때마다 호출되며, 화면을 업데이트하는데 사용됩니다.
didUpdateWidget():
상위 위젯이 다시 렌더링되어 해당 StatefulWidget이 재구성될 때, didUpdateWidget() 메서드가 호출됩니다.
여기서는 새로운 위젯과 이전 위젯의 차이점을 처리하는 로직을 구현할 수 있습니다.
setState():
사용자가 상호작용하여 StatefulWidget의 상태가 변할 때, setState() 메서드를 호출하여 상태를 업데이트합니다.
이 메서드를 호출하면 Flutter는 해당 위젯을 다시 렌더링하고 화면을 업데이트합니다.
deactivate():
StatefulWidget이 더 이상 활성 상태가 아니게 되면, deactivate() 메서드가 호출됩니다.
이 메서드는 위젯이 화면에서 제거되기 전에 호출되며, 필요한 정리 작업을 수행하는데 사용됩니다.
dispose():
StatefulWidget이 파괴될 때, dispose() 메서드가 호출됩니다.
이 메서드는 State 객체의 정리 작업을 수행하는데 사용되며, 메모리 누수를 방지하고 리소스를 해제하는데 중요합니다.