[Flutter] 생명주기

kimdocs...📄·2023년 11월 27일
0

flutter

목록 보기
9/30

플러터의 화면에 표시하는 모든 것이 위젯(Widget)이다.

  • 변경이 필요하면 기존의 위젯을 모두 없애고, 새로운 위젯으로 대체한다.

State

위젯에 대한 속성을 의미한다. (해당 위젯이 가지고 있는 속성을 모두 상태라 부름)

  1. 위젯이 사용하는 데이터는 변경될 수 있다

  2. 위젯이 빌드 될때 데이터를 동시에 읽을 수 없다

    → 모든 state는 build 메서드가 호출 될때까지 설정되어야 한다.

Stateless widget

: State를 가지고 한번 생성되면 절대 바뀌지 않는다. 즉, 위젯을 한 번만 그리고 다시 그리지 않는다.

Stateless를 바꾸려면 완전히 파괴 (destroy)하고 다시 rebuild하는 방법 밖에 없음

Life-Cycle

  • Constructor 생성 후 build() 함수를 호출해 UI를 구성한다
  • 단 한번의 build()함수를 실행함
  • 위젯의 변경이 일어나면 처음부터 Constructor와 build가 다시 실행되는 방식

Stateful widget

: 자체적으로 상태를 가지고 있다. Stateful widget은 상태가 변경되면 build를 여러 번 하는 위젯이다. State Object와 강력하게 결함한다. State Object의 역할은 위젯의 구성요소나 위젯의 속성들을 지속적으로 추적하는 것이기 때문에 사용자가 원하는 대로 위젯의 구성요소나 속성에 관련된 변수들을 setState메서드를 사용해서 언제라도 업데이트할 수 있다.

Life-Cycle

  1. createState

    statefulWidget을 구축하자마자 호출됨

  2. initState

    : 위젯이 생성될때 처음으로 호출되는 메서드

    • 오직 한번 호출되며 반드시 super.initState()를 호출해야함
  3. didChangeDependencies

    : 위젯이 최초 생성될 때 initState() 다음에 호출되며 위젯이 의존하는 데이터의 객체가 호출될때마다 호출됨

  4. build

    버튼을 누르거나 액션을 할 경우 호출되며 반드시 widget을 리턴해야함

  5. didUpdateWidget

    위젯의 구성이 변경될때마다 호출됨

  6. setState

    데이터가 변경되었음(상태가 변경되었음)을 프레임워크에 알리는데 사용하며 비동기적이지 않은 callback에서 사용

  7. deactivate

    : state오브젝트가 트리로 부터 삭제될때마다 호출됨

  8. dispose

    State가 영구적으로 제거된다. (더 이상 build되지 않는 화면)

profile
👩‍🌾 GitHub: ezidayzi / 📂 Contact: ezidayzi@gmail.com

0개의 댓글