[Flutter] StatefulWidget 라이프사이클

정태녕·2024년 1월 6일
0

flutter

목록 보기
4/7

StatelessWidget은 한 번 생성되면 상태 변화가 발생하지 않기 때문에 라이프사이클이 없지만 StatefulWidget은 상태가 변경됨에 따라 build 메서드가 호출되기 때문에 라이프사이클이 필요하다.

  • StatefulWidget의 상태가 변경되면 해당 상태를 반영하기 위해 build 메서드가 호출되고, 다른 라이프사이클 메서드들도 그에 맞게 호출된다.

StatefulWidget 라이프사이클



라이프사이클 메서드

화면호출

1. createState

  • State object를 생성

  • StatefulWidget이 처음 생성될 때 한 번 호출

class MyHomePage extends StatefulWidget {
  
  _MyHomePageState createState() => new _MyHomePageState();
}

2. initState()

  • 주로 처음에 한 번만 호출되며, 상태 초기화나 외부 데이터 로딩 등의 작업을 수행

  • State 객체가 생성되고 위젯 트리에 추가될 때 호출


void initState() {
  super.initState();
  // 초기화 작업 수행
}

3. didChangeDependencies()

  • initState 이후에 호출

  • 위젯이나 부모 위젯의 의존성이 변경되었을 때 호출


void didChangeDependencies() {
  super.didChangeDependencies();
  // 의존성 변경에 대한 작업 수행
}

재드로잉

1. build()

  • 화면을 그리는 메서드로, UI를 생성하고 반환

  • 상태가 변경될 때마다 호출되어 새로운 UI를 생성

  • didChangeDependencies 이후에 호출되며, 상태가 변경될 때마다 다시 호출


Widget build(BuildContext context) {
  // UI 생성
  return Container();
}

2. didUpdateWidget()

  • 위젯의 설정이 변경되어 다시 그려져야 할 때 호출

  • 이전 설정과 새로운 설정을 비교하여 작업을 수행 가능

  • build 이전에 호출되며, setState로 인해 위젯이 업데이트될 때 호출


void didUpdateWidget(MyStatefulWidget oldWidget) {
  super.didUpdateWidget(oldWidget);
  // 위젯 업데이트에 대한 작업 수행
}

3. setState()

  • 상태가 변경될 때 호출되어, 상태가 변경되었다는 것을 프레임워크에 알려 UI를 업데이트

  • 상태 변경이 필요한 시점에 수동으로 호출

setState(() {
  // 상태 변경
});

위젯파기

1. deactivate()

  • State 객체가 위젯 트리에서 제거되기 전에 호출

  • 주로 현재 상태를 저장하거나 애니메이션 컨트롤러를 일시 중지하는 작업을 수행

  • dispose 이전에 호출


void deactivate() {
  // 현재 상태를 저장하거나 애니메이션 등을 일시 중지하는 작업 수행
  super.deactivate();
}

2. dispose()

  • 리소스를 해제하거나 정리 작업을 수행하는 데 사용

  • StatefulWidget이 트리에서 제거될 때 호출


void dispose() {
  // 리소스 해제 또는 정리 작업 수행
  super.dispose();
}
profile
Mobile App Developer

0개의 댓글