How Flutter Works: The State class #DecodingFlutter
- Flutter의
State 클래스는 StatefulElement에 연결된 장수 객체로, 비즈니스 로직과 UI 로직의 교차점을 담당합니다. 🔄
initState, didChangeDependencies, didUpdateWidget, build, dispose의 다섯 가지 핵심 라이프사이클 메서드가 있습니다. 🖐️
initState는 상태 객체의 첫 번째 메서드로, 인스턴스 리소스 초기화 및 변경될 데이터 설정을 위한 관용적인 장소입니다. 🚀
didChangeDependencies는 상태 객체가 새로 생성되거나 InheritedWidget과 같은 의존성이 변경될 때 호출됩니다. 🔗
InheritedWidget은 위젯 트리의 깊은 곳으로 값을 효율적으로 전달하며, MediaQuery.sizeOf(Context) 같은 .of 메서드로 의존성을 설정합니다. 🌳
didUpdateWidget은 상위 위젯 재빌드 시 호출되어 이전 위젯과의 변경 사항을 감지하고 애니메이션 등 필요한 액션을 수행합니다. 💡
build는 렌더링 단계에서 유일하게 무조건 호출되는 메서드로, didChangeDependencies 및 didUpdateWidget 이후에 실행됩니다. 🏗️
dispose는 위젯 트리의 해당 브랜치가 제거될 때 호출되며, I/O 핸들, 스트림, 애니메이션 컨트롤러 등 리소스를 정리하는 최종 단계입니다. 🗑️
setState는 Flutter 앱을 다음 프레임으로 진행시키는 핵심 메서드로, 상태 객체를 재빌드 목록에 추가하여 렌더링 단계를 다시 시작하게 합니다. ♻️
setState 클로저 내에서는 속성 할당만 하고, 보조 계산은 외부에 두는 것이 관례이며, 이는 개발자들이 재렌더링을 잊지 않도록 돕기 위함입니다. ✍️
State 클래스의 라이프사이클 메서드들을 활용하여 선언형 UI에서 변경 사항을 감지하고 애니메이션 및 전환을 효과적으로 구현할 수 있습니다. ✨
데브허브 | DEVHUB | How Flutter Works: The State class #DecodingFlutter