ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 플러터 라이프 사이클
    flutter 2021. 4. 21. 01:59

    StatefulWidget LifeCycle

     

    createState : 프레임워크가 Stateful을 만들 때 createState 호출

    mounted is true : createState가 state class를 만든 후 buildContext가 할당된다 할당된 경우 true 아닐경우 false

    여기서 setState를 콜하면 widget이 시작되지않고 오류가 발생

    initState : 객체가 위젯트리에 할당되었을 때 호출build 전에 데이터를 가져와야되는 경우 controller등을 설정하는 경우에 사용

    didChangeDependencies : State의 의존성이 변경되었을 때 호출InheritedWidget, Provider등을 통해 데이터 변경 후 상태를 변경

    build : 위젯을 return하는 함수, 주로 UI부분을 처리

    didUpdateWidget : 부모 위젯이 rebuild되거나 위젯트리의 변경이 일어날 때 호출

    setState : 데이터 변경 후 프레임워크에 데이터가 변경된것을 알리기 위해 사용되는 메소드

    데이터 변경을 UI에 표시되는 값을 변경할 때 사용하지만 너무 많이 호출 혹은 복잡한 위젯을 재호출 하는경우 성능상 저하가 우려

    deactive : 위젯트리에서 객체가 제거되었을 때 호출

    dispose : State 객체가 영구적으로 제거되었을 때 호출주로 controller를 dispose하기위해 사용

    출처: https://devmemory.tistory.com/8?category=935233 [Never give up]


    initState()

    initState() 메소드는 State객체가 생성될 때 처음에 한 번 호출 되는 메소드입니다.

    이 메소드는 추가적인 초기화를 실행할 필요가 있을 때 (에니메이션이나 컨트롤러등을 사용할 때 등등) 오버라이드하면 됩니다.

    이 메소드를 오버라이드한다면 super.initState()를 가장먼저 실행해야합니다.

    initState 메소드가 완료되면 State 객체는 초기화 되었고 Context를 사용할 수있습니다.

    이메소드는 이 State 객체가 살아있는 동안 더이상 호출되지 않습니다.

    didChangeDependencies()

    didChangeDependencies()는 두번째로 호출되는 메소드 입니다.

    이단계에서 context는 사용가능해서 사용해도됩니다.

    이 메소드는 일반적으로 위젯이 InheritedWidget에 링크되어 있거나

    BuildContext를 기반의 일부 리스너를 초기화해야하는 경우에 오버라이드 됩니다.

    위젯이 InheritedWidget에 링크되어 있는 경우, 이 메소드는 위젯이 재빌드 될 때마다 호출 됩니다.

    이 메소드를 오버라드 할 때 super.didChangeDependencies()를 먼저 호출 하세요.

    build()

    build(BuildContext context) 메소드는 didChangeDependencies (그리고 didUpdateWidget) 이후에 호출 됩니다.

    여기는 위젯을 만드는 곳입니다.

    이 메소드는 State 객체가 변경될 때마다 (또는 InheritedWidget이 등록된 위젯에게 통지할 때마다) 호출됩니다.

    리빌드를 해야한다면 setState({...}) 메소드를 호출 하세요.

    dispose()

    dispose() 메소드는 위젯이 폐기될 때 호출 됩니다.

    리스너나 컨트롤러등 과 같은 것들을 정리할 필요가 있을 때 호출합니다.

    super.dispose()를 먼저호출해 주세요.

    출처: https://paulaner80.tistory.com/entry/Widget-State-BuildContext-그리고-InheritedWidget [paulaner80]

     

     

     

    'flutter' 카테고리의 다른 글

    flutter bloc 패턴, rxdart..  (0) 2021.07.03
    TabBarView PageView에서 위젯 리빌드 방지  (0) 2021.05.03
    null safety  (0) 2021.05.02
    runtransaction 트랜잭션 처리  (0) 2021.04.21
    setState() called after dispose() 오류  (0) 2021.04.21
Designed by Tistory.