Flutter - State of App Activity Lifecycle

 

플러터 앱 활동 생명주기

<출처 medium.flutterdevs.com>


createState()

  • StatefulWidget의 상태 객체를 생성하는 메소드
  • 호출시 State 클래스의 인스턴스 반환
class HomeScreen extends StatefulWidget {

  HomeScreen({Key key}) : super(key: key);
  
  @override
  HomeScreenState<StatefulWidget> createState() => HomeScreen();
}

initState()

  • State 객체 생성 후 최초에 한 번 호출되는 메소드
  • 주로 초기화 작업이나 리소스 로드 등 수행
@override
void initState(){
  super.initState();
}

didChangeDependencies()

  • initState() 이후 호출되는 메소드
  • 위젯이나 상태에 의존하는 데이터가 변경되었을 때 호출
  • 주로 데이터의 초기화나 업데이트 작업 수행
@override
void didChangeDependencies() {

}

build()

  • 위젯의 UI를 구성하는 메소드
  • build()가 호출될 때마다 위젯의 상태에 따라 UI가 다시 그려짐
@override
Widget build(BuildContext context) {
  return Scaffold()
}

didUpdateWidget()

  • 위젯이 업데이트되었을 때 호출되는 메소드
  • 업데이트된 위젯의 속성을 사용하여 상태를 업데이트하는 작업 수행
    • 예시 : 부모 위젯이 새로운 속성을 전달하여 해당 위젯이 다시 렌더링 되었을 때
@protected
void didUpdateWidget(Home oldWidget) {
  super.didUpdateWidget(oldWidget);
}

setState()

  • State 객체의 상태를 업데이트하고 UI를 다시 그리도록 하는 메소드
  • 상태가 변경되었음을 알리면 build() 메소드가 호출되어 UI 업데이트
void function(){
  setState(() {});
}

deactivate()

  • 해당 위젯이 현재 화면에서 제거되기 직전에 호출되는 메소드
  • 주로 리소스의 해제나 애니메이션의 정지와 같은 정리 작업 수행
@override
void deactivate(){
  super.deactivate();
}

dispose()

  • 위젯이 영구적으로 제거될 때 호출되는 메소드
  • 리소스의 해제나 이벤트 해제와 같은 정리 작업 수행
  • dispose() 호출 이후 해당 위젯은 사용할 수 없음
@override
void dispose(){
  super.dispose();
}

참고

medium.flutterdevs.com - App Lifecycle In Flutter