ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Flutter 생명 주기
    Flutter 2023. 10. 23. 14:21

    - Flutter의 화면은 위젯으로 이루어져 있다.

    - 모든 위젯은 위젯트리에 의해 관리되고 있다.

    - Stateless 위젯은 한번 생성되면 절대 바뀌지 않기 때문에 상태 변환을 하려면 완전 삭제 후 다시 생성해야 한다.

    - Stateful 위젯은 상태 관리를 위한 별도의 State 객체와 링크하여, 위젯을 제거하지 않고도 상태를 변화시킬 수 있다.

     

    생명주기 도식표

    Stateful WidgetLifeCycle 상태 설명

    처음Constructor와 CreateState() 를통해 Stateful 위젯이 생성된다.

    여기까지만 하면 사실상 Stateless 위젯임.

    그리고 상태관리를 해주는 State 객체에 연결(mount)된다.

    initState()

    제일 처음 mount 되었을 때 실행되는 함수.

    한번 불리면 다시 불리지 않는다.

    위젯을 초기화한다.

    didChangeDependencies()

    initState를 통한 위젯 초기화 이후 불리는 함수.

    데이터에 의존하는 위젯이라면 화면에 build하기 전에 한번 호출해 줘야 함.

    이때는 context는 생겼고, build는 실행되기 전이기 때문에 context 관련 함수들을 사용할 수 있다.

    build()

    위젯를 return하는 함수.

    여기안에서 return되는 위젯이 실질적으로 화면에 보이게 됨.

    didUpdateWidget()

    부모 위젯에 의해 rebuild 해야할 경우에 호출.

    clean 상태에서 파라미터가 바뀌면 새로 생성된 위젯이 CreateState를 하지 않고 바로 didUpdateWidget 실행

    deactivate()

    State 객체가 트리에서 제거될 대 호출

    상태 객체만 제거되고 다시 추가되는 경우에 사용.

    예를 들어 GlobalKey를 사용하여 현재 위젯을 위젯 트리의 특정 위치로 이동시키면, 해당 위젯의 상태 객체가 변경되므로 deactivate가 실행된다. 

    dispose()

    위젯 객체가 위젯 트리에서 영구적으로 제거될 때 사용

    보통 사용한 Controller들을 이 함수에 넣어 함께 dispose 해준다.

    setState()

    보통 원하는 시점에 화면을 rebuild 하고 싶을 때 많이 사용

    clean 상태에서 State 객체가 자체적으로 상태를 rebuild 시킬 수 있는 함수.

Designed by Tistory.