춘기IT/춘기개발
Flutter 라이프 사이클 이해하기
화춘기
2025. 6. 18. 20:47
🌀 Flutter 라이프사이클(lifecycle)은
위젯이 화면에 나타나고, 사라지는 과정을 따라 특정 메서드들이 호출되는 순서를 말합니다.
특히, StatefulWidget의 상태(State)를 관리하는 과정에서
라이프사이클 메서드들이 중요한 역할을 합니다.
플러터의 위젯은 StatelessWidget 혹은 StatefulWidget으로 대부분의 위젯을 만듭니다.
앱을 개발하는 과정에서 여러 가지 문제점을 접하게 되는데,
그때 라이프 사이클을 알고 있다면 문제 원인 파악 및 문제 해결에 도움이 될 것입니다.
📌 StatelessWidget 라이프 사이클
- 플러터에서 StatelessWidget의 경우 상태를 갖지 않는 위젯으로 라이프 사이클이 간단합니다.
- StatelessWidget이 사용되면 다음 메서드가 순차적으로 호출됩니다.
📌 StatefulWidget 라이프 사이클
- StatefulWidget은 StatelessWidget에 비해 많은 단계가 있어 보여 복잡하게 느껴질 수 있습니다.
아래에서 각 단계별로 살펴보겠습니다.
1️⃣ createState()
- StatefulWidget이 처음 생성될 때 호출되고, 이 메서드는 StatefulWidget과 연결된 State 객체를 생성합니다.
- 예시
@override
_MyWidgetState createState() => _MyWidgetState();
2️⃣ initState()
- State 객체가 처음 생성될 때 한 번 호출됩니다. 초기화 작업을 수행할 수 있는 곳입니다.
- 반드시 super.initState()를 호출해야 합니다.
- 예시
@override
void initState() {
super.initState();
// 초기화 작업
}
3️⃣ didChangeDependencies()
- State 객체가 처음 생성된 후, 또는 State 객체의 종속성이 변경될 때 호출됩니다.
- 예시
@override
void didChangeDependencies() {
super.didChangeDependencies();
// 종속성이 변경될 때 작업
}
4️⃣ build(BuildContext context)
- State 객체가 UI를 그릴 때마다 호출되고, build 메서드는 위젯 트리를 반환합니다.
- 이 메서드는 여러 번 호출될 수 있습니다.
- 예시
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('My Stateful Widget')),
body: Center(child: Text('Hello, World!')),
);
}
5️⃣ didUpdateWidget(covariant T oldWidget)
- 부모 위젯이 StatefulWidget을 다시 빌드할 때 호출됩니다. 이전 위젯과 새 위젯을 비교하여 상태를 업데이트할 수 있습니다.
- 예시
@override
void didUpdateWidget(MyWidget oldWidget) {
super.didUpdateWidget(oldWidget);
// 위젯이 업데이트될 때 작업
}
6️⃣ setState(VoidCallback fn)
- 상태를 변경하고 UI를 다시 빌드해야 할 때 호출됩니다. setState 내부의 함수는 상태를 변경하는 작업을 수행합니다.
- 예시
void _updateState() {
setState(() {
// 상태 변경 작업
});
}
7️⃣ dispose()
- 위젯이 완전히 제거될 때 호출됩니다.
- 리소스 해제, 타이머 정리 등에 사용합니다. (리소스 해제, 타이머 정리 등)
- 예시
@override
void dispose() {
// 컨트롤러, 리스너 해제
super.dispose();
}