Flutter

위젯의 라이프사이클

hamiric 2024. 10. 7. 14:15

위젯을 만드는 방법 3가지

  1. 플러터 기본 내장 위젯을 이용하는 방법

      - flutterdev 의 Widget catalog

 

Widget catalog

A catalog of some of Flutter's rich set of widgets.

docs.flutter.dev

 

  2. pub.dev에서 개발자분들이 공유하고 있는 위젯을 이용하는 방법

    - pub.dev

 

The official repository for Dart and Flutter packages.

Pub is the package manager for the Dart programming language, containing reusable libraries & packages for Flutter and general Dart programs.

pub.dev

 

3. 직접 원하는 위젯를 작성하는 방법

 

라이프 사이클

  위젯의 라이프 사이클이란 위젯의 생성부터 삭제 및 종료되는 단계의 과정에서 발생되는 이벤트들의 '호출순서'를 의미한다.

  즉, 사용자가 앱을 실행하는 과정에 있어, 컴포넌트가 생성되고, 사라지고, 종료되는 일련의 과정에서 가지게 되는 상태(State)

 

  StatelessWidget의 라이프 사이클

StatelessWidget의 라이프사이클

 

  StatelessWidget은 단순히 화면을 구성하는 위젯이며, 단순한 라이프 사이클을 가지고 있다.

    - 한번만 위젯을 생성하고, 위젯의 구성요소에 대한 변화가 없다.

    - 라이프 사이클동안 '단 한번의' Build() 함수를 실행한다.

    -  자체적으로 상태(State)를 가지고 있지 않고, 부모 위젯으로부터 전달받은 값이 변경될 경우 rebuild 해서 새로운 위젯으로

       대체 해버린다. 즉, 위젯의 변경이 일어나면 처음부터 Contructor와 build가 다시 실행되는 방식

 

 

  StatefulWidget의 라이프사이클

StateWidget의 라이프사이클 (좌: 간략화이미지, 우 : 보다 자세한 이미지)

 

  StatefulWidget은 자체적으로 상태(State)를 가지고 있는 위젯이며, 복잡한 라이프 사이클을 가지고 있다.

 

    - createState는 StatefulWidget이 처음 생성될때 호출된다. 이는 위젯과 연결된 'State객체'를 생성한다.

        @override

        _MyWidgetState createState() => _MyWidgetState();

 

 

    - initState()는 'State객체'가 처음 생성될때 한번만 호출되는 초기화 작업 함수

 

        @override

        void initState() {

            super.initState();

        }

 

 

    - didChangeDependencies()는 'State객체'가 처음 생성된 후, 'State객체'의 종속성이 변경될 때 호출

 

        @override

        void didChangeDependecies() {

            super.didChangeDependecies();

        }

 

 

    - build()는 'State객체'가 UI를 그릴때마다 호출되는 함수이며, 위젯트리를 반환한다.

 

        @override

        Widget build(BuildContext context) {

            return Scaffold(

                appBar : AppBar(title : Text('-')),

                body : Center(chile : Text('--')),

            );

        }

 

 

    - didUpdateWidget()은 상위 위젯이 다시 렌더링 되어 해당 StatefulWidget이 다시 빌드될때 호출된다. 이전 위젯과 새 위젯을 비교하여 상태를 업데이트 할 수 있다.

 

        @override

        void didUpdateWidget(MyWidget oldWidget) {

            super.didUpdateWidget(oldWidget);

        }

 

 

    - setState()는 사용자가 상호작용을 통해 위젯의 상태가 변경되고, 이에 UI를 다시 빌드해야 할때 호출된다.

 

        void _updateState() {

            setState( () {

            });

        }

 

 

    - deactivate()는 StatefulWidget이 더이상 활성 상태가 아니게 될때 호출되는 함수이며, 위젯이 화면에서 제거되기 직전에 호출 하여 필요한 정리 작업을 수행하는데 사용된다.

 

 

    - dispose()는 StatefulWidget이 파괴될때 호출되며, 'State객체'의 정리 작업을 수행하여 메모리 누수를 방지하고 리소스를 해제 하는 역할을 수행한다.

 

 

## 추가 (라이프 사이클의 심화)

 

[Flutter 기초] AppLifeCycle과 WidgetBindingObserver에 대해 알아보자

App의 LifeCycle이란? 특정 앱을 실행하였을 때, 이 앱이 잠시 백그라운드에 넘어갈 수도 있고, 혹은 상태바를 내리는 액션을 통해 앱이 잠시 중지되었을 수도 있다. 이 때 앱의 상태를 이 글에서 App

velog.io

 

'Flutter' 카테고리의 다른 글

View위젯 (2)  (0) 2024.10.08
View위젯 (1)  (0) 2024.10.07
위젯트리  (0) 2024.10.07
Dart 문법 기초  (0) 2024.10.04
Flutter의 장점 및 개발환경설정  (0) 2024.10.02