StatefulWidget의 상태가 변경되면 해당 상태를 반영하기 위해 build 메서드가 호출되고, 다른 라이프사이클 메서드들도 그에 맞게 호출된다.
State object를 생성
StatefulWidget이 처음 생성될 때 한 번 호출
class MyHomePage extends StatefulWidget { _MyHomePageState createState() => new _MyHomePageState(); }
주로 처음에 한 번만 호출되며, 상태 초기화나 외부 데이터 로딩 등의 작업을 수행
State 객체가 생성되고 위젯 트리에 추가될 때 호출
void initState() { super.initState(); // 초기화 작업 수행 }
initState 이후에 호출
위젯이나 부모 위젯의 의존성이 변경되었을 때 호출
void didChangeDependencies() { super.didChangeDependencies(); // 의존성 변경에 대한 작업 수행 }
화면을 그리는 메서드로, UI를 생성하고 반환
상태가 변경될 때마다 호출되어 새로운 UI를 생성
didChangeDependencies 이후에 호출되며, 상태가 변경될 때마다 다시 호출
Widget build(BuildContext context) { // UI 생성 return Container(); }
위젯의 설정이 변경되어 다시 그려져야 할 때 호출
이전 설정과 새로운 설정을 비교하여 작업을 수행 가능
build 이전에 호출되며, setState로 인해 위젯이 업데이트될 때 호출
void didUpdateWidget(MyStatefulWidget oldWidget) { super.didUpdateWidget(oldWidget); // 위젯 업데이트에 대한 작업 수행 }
상태가 변경될 때 호출되어, 상태가 변경되었다는 것을 프레임워크에 알려 UI를 업데이트
상태 변경이 필요한 시점에 수동으로 호출
setState(() { // 상태 변경 });
State 객체가 위젯 트리에서 제거되기 전에 호출
주로 현재 상태를 저장하거나 애니메이션 컨트롤러를 일시 중지하는 작업을 수행
dispose 이전에 호출
void deactivate() { // 현재 상태를 저장하거나 애니메이션 등을 일시 중지하는 작업 수행 super.deactivate(); }
리소스를 해제하거나 정리 작업을 수행하는 데 사용
StatefulWidget이 트리에서 제거될 때 호출
void dispose() { // 리소스 해제 또는 정리 작업 수행 super.dispose(); }