본문 바로가기
new

Flutter에서 위젯 라이프 사이클 이해하기: StatelessWidget, StatefulWidget

by ftbd 2024. 3. 6.
 
 

Flutter에서 위젯은 앱의 UI를 구성하는 기본 요소입니다. 위젯은 각자의 라이프 사이클을 가지고 있으며, 이는 위젯이 앱 내에서 어떻게 생성, 업데이트 및 제거되는지 정의합니다.

1. StatelessWidget 라이프 사이클

StatelessWidget은 불변하는 위젯입니다. 즉, 위젯의 상태가 변경되지 않기 때문에 라이프 사이클은 매우 간단합니다.

  • 생성: StatelessWidget 클래스의 build 메서드가 호출되어 위젯 트리가 생성됩니다.
  • 삽입: 위젯 트리가 앱 화면에 표시됩니다.
  • 제거: 위젯 트리가 앱 화면에서 제거됩니다.

2. StatefulWidget 라이프 사이클

StatefulWidget은 상태가 변경될 수 있는 위젯입니다. 따라서 StatelessWidget보다 더 복잡한 라이프 사이클을 가지고 있습니다.

  • 생성: StatefulWidget 클래스의 createState 메서드가 호출되어 위젯 상태 객체가 생성됩니다.
  • 초기화: initState 메서드가 호출되어 위젯 상태 객체가 초기화됩니다.
  • 빌드: build 메서드가 호출되어 위젯 트리가 생성됩니다.
  • 삽입: 위젯 트리가 앱 화면에 표시됩니다.
  • 업데이트: setState 메서드가 호출되어 위젯 상태가 변경되면 build 메서드가 다시 호출되어 위젯 트리가 업데이트됩니다.
  • 제거: dispose 메서드가 호출되어 위젯 상태 객체가 제거됩니다.

3. 라이프 사이클 메서드

다음은 위젯 라이프 사이클에서 중요한 메서드입니다.

  • initState: 위젯 상태 객체를 초기화하는 데 사용됩니다.
  • build: 위젯 트리를 생성하는 데 사용됩니다.
  • didChangeDependencies: 위젯의 종속성이 변경될 때 호출됩니다.
  • didUpdateWidget: 위젯의 props가 변경될 때 호출됩니다.
  • deactivate: 위젯이 비활성화될 때 호출됩니다.
  • dispose: 위젯 상태 객체를 제거하는 데 사용됩니다.

4. StatelessWidget vs StatefulWidget 비교

기능StatelessWidgetStatefulWidget
상태 변경 불가능 가능
라이프 사이클 간단 복잡
성능 더 나은 상대적으로 낮음
사용 사례 UI 요소, 아이콘, 버튼 동적 UI, 애니메이션