앱 만들기 프로젝트/Flutter

Flutter - 4.4 Widget Lifecycle

지나가는물리석사학생 2024. 10. 27. 19:58
반응형

StatefulWidget에게는 lifecycle이 있다.(이벤트에 반응한다.)

MyLargeTitle 위젯을 StatefulWidget으로 바꿔보자.

변수를 초기화 하려면...
이전처럼 그냥 해도 되지만...

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
  }

이렇게 하는 방법도 있다. 사실은 거의 대부분의 경우에서 필요 없다고 한다.
하지만, 가끔 부모 요소에 의존하는 데이터를 초기화해야 하는 경우가 있다.
ex) API를 통해서 구독 정보를 업데이트 하는 경우.

initState는 항상 build보다 먼저 호출되어야 한다!
그리고, 단 한번만 호출된다!

initState가 실행되고 그 후에 build가 실행된다.

그리고 다른 method를 소개하자면... dispose가 있다.

  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
  }

dispose는 위젯이 스크린에서 제거될 때 호출되는 method다.(취소할 )
언제 사용될까? : API 업데이트, 이벤트 리스너로부터 구독 취소, form의 리스너로부터 벗어나고 싶을 때 사용.
해당하는 'StatefulWidget'이 제거될 때 호출됨!!!

이렇게 StatefulWidget은 lifecycle을 가지고 있다...
다른 method들도 많지만, 생략한다고 한다.(많이 사용하지는 않아서...?)

간단하게 다른 method들을 살펴보자면...
자세한 것은 여기를 살펴보자. 정말 잘 설명되어 있다.https://jaceshim.github.io/2019/01/28/flutter-study-stateful-widget-lifecycle/

  1. createState()
  2. mounted == true
  3. initState()
  4. didChangeDependencies()
  5. build()
  6. didUpdateWidget()
  7. setState()
  8. deactivate()
  9. dispose()
  10. mounted == false

위 번호 순서대로 StatefulWidget이 실행된다고 생각하면 된다.

참고로, createState()는 

class MyLargeTitle extends StatefulWidget {
  const MyLargeTitle({
    super.key,
  });

  @override
  State<MyLargeTitle> createState() => _MyLargeTitleState();
}

여기에 있는 createState()를 말한다.

반응형

'앱 만들기 프로젝트 > Flutter' 카테고리의 다른 글

Flutter - 5.1 Timer  (0) 2024.11.18
Flutter - 5.0 User Interface  (0) 2024.11.13
Flutter - 4.3 BuildContext  (0) 2024.10.27
Flutter - 4.1 setState  (0) 2024.10.27
Flutter - 4.0 State  (0) 2024.10.27