728x90
210919 일
오늘 usb 잭을 못 가져와서 에뮬레이터로 실습해보려고 했는데
어마무시하게 느린 속도에 놀라서 바로 꺼버렸다..ㅎㅎ 와우
스테이트풀 위젯의 생명주기
- 위젯의 상태를 생성하는 createState 함수
👉🏻 다른 생명주기 함수들이 포함된 State 클래스를 반환하므로 반드시 처음에 호출한다.class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => new _MyHomePageState(); }
✍🏻 상태 변경 감시는 StatefulWidget 클래스 담당, 실제 갱신 등은 State 클래스가 담당한다. - 위젯을 화면에 장착하면 mounted == true
👉🏻 createState 함수가 호출되어 상태가 생성되면 곧바로 mounted 속성이 true가 된다.if (mounted) { setState() }
✍🏻 mounted == true: 위젯을 제어할 수 있는 buildContext클래스에 접근할 수 있다. - 위젯을 초기화하는 initState() 함수
👉🏻 위젯을 초기화할 때 한 번만 호출한다.@override initState() { super.initState(); _getJsonData(); }
✍🏻 주로 데이터 목록을 만들거나 처음 필요한 데이터를 주고받을 때 호출한다. 네트워크 통신이 안 되거나 데이터가 이상할 때를 대비해 initState() 함수에서 데이터를 준비해둔다. - 의존성이 변경되면 호출하는 didChangedDependencies 함수
👉🏻 initState 후에 이어서 바로 호출된다. 상속받은 위젯을 사용할 때 피상속자가 변경되면 호출한다. - 화면에 표시하는 build 함수
👉🏻 Widget을 반환한다. = 위젯을 화면에 렌더링한다.@override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.amber, ), home: MyHomePage(title: 'Flutter Demo Home Page'), ); }
- 위젯을 갱신하는 didUpdateWidget 함수
👉🏻 부모 위젯이나 데이터가 변경되어 위젯을 갱신해야할 때 호출한다.@override void didUpdateWidget(Widget oldWidget) { if (oldWidget.importantProperty != widget.importantProperty){ _init(); } }
✍🏻 initState 함수는 한 번만 호출되므로 didUpdateWidget 같은 함수가 필요하다. - 위젯의 상태를 갱신하는 setState 함수
👉🏻 데이터가 변경됨을 알리고 변경된 데이터를 이용해 화면의 UI를 변경한다.void updateProfile(String name) { setState(() => this.name = name); }
✍🏻 앱의 화면을 구성하므로 제일 많이 사용한다. - 위젯의 상태 관리를 중지하는 deactivate 함수
👉🏻 State 객체가 플러터의 구성 트리로부터 제거한다. but 메모리가 지워지지는 않는다. - 위젯의 상태 관리를 완전히 끝내는 dispose 함수
👉🏻 State 객체를 영구적으로 소멸한다. = 해당 위젯을 종료한다. - 위젯을 화면에서 제거하면 mounted == false
👉🏻 State 객체가 소멸하면 mounted 속성이 false가 되면서 생명주기가 끝난다. 이 때 이 State는 재사용할 수 없다.
728x90
'그 땐 App했지 > 그 땐 Flutter했지' 카테고리의 다른 글
[TAVE/Study] Do it! Flutter 5장 탭바와 리스트 만들기① (0) | 2021.09.29 |
---|---|
[TAVE/Study] Do it! Flutter 4장 플러터 위젯 사용법② (0) | 2021.09.22 |
[TAVE/Study] Do it! Flutter 4장 플러터 위젯 사용법① (0) | 2021.09.22 |
[TAVE/8thStudy] Do it! Flutter 3장 플러터 내부 구조 살펴보기① (0) | 2021.09.21 |
[TAVE/Study] Do it! Flutter 2장 다트를 알면 플러터가 보인다 (0) | 2021.09.20 |