본문 바로가기
Category/Flutter

Flutter 라이프사이클

by Corinee 2024. 11. 2.
728x90
반응형

Flutter의 라이프사이클은 Flutter 애플리케이션의 실행 및 종료 동안 위젯의 상태와 생명주기를 관리하는 방법입니다. 이 라이프사이클은 주로 StatefulWidget에서 중요하게 다뤄지며, State 클래스의 다양한 메서드를 통해 위젯의 상태가 어떻게 변화하는지를 보여줍니다. 여기 Flutter 라이프사이클의 주요 메서드와 설명입니다:

1. initState()

  • 설명: 위젯이 처음 생성될 때 호출되는 메서드입니다. 초기화 작업을 수행할 때 사용되며, 단 한 번만 호출됩니다.
  • 사용 예시: 초기 API 호출, 애니메이션 컨트롤러 초기화 등.
  • 주의사항: super.initState()를 반드시 호출해야 합니다.

2. didChangeDependencies()

  • 설명: 위젯이 부모 위젯의 변경에 따라 종속성에 변화가 있을 때 호출됩니다. initState() 이후 또는 InheritedWidget의 변경이 감지될 때 호출될 수 있습니다.
  • 사용 예시: InheritedWidget을 통해 전달받은 데이터를 참조할 때 사용됩니다.
  • 주의사항: super.didChangeDependencies()를 호출해야 합니다.

3. build(BuildContext context)

  • 설명: 위젯이 화면에 그려질 때 호출되는 메서드로, 가장 중요한 메서드입니다. 위젯 트리를 구성하고 화면에 표시될 UI를 반환합니다.
  • 사용 예시: 위젯의 UI를 정의하고 필요한 하위 위젯들을 구성할 때 사용됩니다.
  • 주의사항: 상태가 변경될 때마다 이 메서드가 다시 호출됩니다.

4. setState()

  • 설명: 상태가 변경될 때 호출하여 UI를 재구성하는 메서드입니다. 상태가 변경될 때 build() 메서드를 다시 호출하여 새로운 상태로 UI를 업데이트합니다.
  • 사용 예시: 버튼 클릭 시 상태를 변경하여 화면을 다시 그리게 할 때 사용됩니다.
  • 주의사항: 비동기 작업이 완료된 후에 setState()를 호출할 때는 위젯이 여전히 활성 상태인지 확인하는 것이 좋습니다.

5. deactivate()

  • 설명: 위젯이 트리에서 제거될 때 호출됩니다. 단, 위젯이 다시 추가될 수도 있기 때문에 이 시점에서는 완전히 소멸되지는 않습니다.
  • 사용 예시: 특별한 경우가 아니면 자주 사용되지는 않습니다.
  • 주의사항: super.deactivate()를 호출해야 합니다.

6. dispose()

  • 설명: 위젯이 완전히 소멸될 때 호출됩니다. 리소스 정리, 애니메이션 컨트롤러 해제, 스트림 리스너 취소 등 메모리 누수를 방지하기 위해 사용됩니다.
  • 사용 예시: 애니메이션 컨트롤러, 스트림, 이벤트 리스너 등을 해제할 때 사용됩니다.
  • 주의사항: super.dispose()를 반드시 호출해야 합니다.

7. didUpdateWidget(covariant T oldWidget)

  • 설명: 위젯의 부모가 새 위젯을 구성하고 이 위젯의 상태 객체가 동일할 때 호출됩니다. 즉, 위젯의 속성이 변경되었을 때 호출됩니다.
  • 사용 예시: 속성 값이 변경되었을 때 특정 로직을 실행할 필요가 있을 때 사용됩니다.
  • 주의사항: super.didUpdateWidget(oldWidget)을 호출해야 합니다.

이 메서드들은 주로 StatefulWidget에서 사용되며, 위젯의 상태 관리와 라이프사이클을 통해 애플리케이션의 복잡한 UI 로직을 구현할 수 있게 해줍니다.