Lifecycle method

장윤찬·2021년 12월 9일

Flutter 발전시키기

목록 보기
3/5

Stateless / Stateful

Lifecycle(생명주기)를 알기 위해서는 상태를 다루는 두개의 State 객체를 알아야한다.

Stateless

Stateless Widgets
constructor Function
↓
build()

변경할 수 없는 상태를 가지는 위젯이다. 즉, 보여주기만 하는 build()메소드로만 넘어간다.

Stateful

Stateful Widget
Constructor Function
↓
initState()
↓
build()
↓
setState()
↓
didUpdateWidget()
↓
Build()

변경가능한 상태를 가지는 위젯이다. 여러 라이프사이클 메소드를 가진다.
라이플사이클 메소드를 통해 원하는 메소드의 호출 순서, 조건을 성정할 수 있다.

initState()

Stateful()위젯이 생성될때, 자동적으로 맨처음 호출되는 메소드이다. (오직 한번만 호출됨)

  • 사용법
void initState() {
  super.initState();
  // todo
}

※반드시 super.initState()를 호출해야한다.※

didChangeDependencies()

위젯 최초 생성 시 initState()바로 다음에 호출되는 메소드이다.
또한, 위젯이 의존하는 데이터의 객체가 호출될때마다 호출된다. 따라서, 상속한 위젯이 업데이트되어 네트워크 호출이 필요한 경우 유용하다.

  • 사용법
void didChangeDependencies() {
  super.didChangeDependencies();
  // todo
}

※반드시 super.didChangeDependencies()를 호출해야한다.※

setState()

개발하는 입장에서 매우 자주 호출되는 메소드이다. 메소드 수행 후 자동으로 build context의 위젯을 rebuild한다. 따라서 유저와의 상호작용을 통해 앱의 상태가 변하도록 한다.

deactivate()

위젯트리에서 상태객체가 지워질때 호출된다.

  • 사용법
void deactivate() {
  super.deactivate();
  // todo
}

※반드시 super.deactivate()를 호출해야한다.※

dispose()

State객체를 영구적으로 제거한다. (해당 화면은 더이상 build되지않음)

profile
Flutter 학습 일기

0개의 댓글