반응형
Stateless Widget 생명 주기
Stateless Widget은 상태 변화가 없는 위젯으로 생명주기는 간단하게 다음과 같다.
- 위젯 생성: build() 메서드가 최초 호출될 때 생성된다.
- build() 메서드 호출: build() 메서드는 Flutter Framework에서 UI를 그리기 위해 호출된다.
- UI 그리기: build() 메서드에서 정의한 UI가 화면에 그려진다.
- 위젯 소멸: 위젯이 더 이상 필요하지 않을 때 소멸된다.
Stateless Widget은 간단하게 build() 메서드만 호출하면 된다. build() 메서드가 호출될 때마다 새로운 위젯을 생성하지 않고 기존 위젯을 재사용한다.
Stateful Widget 생명 주기
Stateless Widget 과 달리 Stateful widget 은 생명주기가 좀 더 복잡하고 앱을 개발하는데 있어서 모르면 안되는 중요 부분이다.
- createState()
- Stateful Widget 객체를 생성하면 생성자가 호출되고 이 메서드가 호출된다. Stateful Widget 에서 필수적으로 오버라이드 해야 하는 메서드이다. 이 메서드의 역할은 State 객체를 생성하는 일이다.
- initState()
- State 객체가 생성되면 State 객체의 생성자가 호출된다. 이렇게 위젯이 최초 생성되는 상황이면 이 메서드가 호출된다. 처음 한 번만 호출되는 함수이다. 여기서 데이터나 속성값을 초기화 할 수 있다.
- didChangeDependencies()
- initState() 다음에 실행되는 메서드. 추가적으로 위젯이 의존하는 데이터의 객체가 호출될 때 호출 되기도 한다. Inherited Widget 을 사용하는 경우가 대표적이라고 할 수 있다.
- build()
- build()를 통해서 위젯이 그려진다. State 클래스에서 반드시 오버라이딩 되어야 하는 메서드이다. 예를 들어 버튼을 클릭 할 때나 어떠한 액션을 취할 때 계속 실행되는 함수이다.
- setState()
- State 객체의 상태가 변경되었다는 것을 프레임워크에 알리는 용도이다. 따라서 State 객체의 상태가 변경될 때마다 setState() 함수를 통해서 알려야 한다. 그래야만 프레임워크가 build() 함수가 호출할 준비를 한다.
- didUpdateWiget()
- 부모 위젯이 재 빌드되어 위젯이 갱신될 때 호출된다. didUpdateWiget()이 호출된 후에는 항상 build()를 호출한다. 따라서 만약 didUpdateWiget() 내에서 setState() 를 호출하면 build() 중복 호출이 된다.
- deactivate()
- 트리에서 State 객체가 제거될 때마다 호출된다. 어떤 경우에는 프레임워크가 제거된 State 객체를 트리의 다른 부분에 다시 삽입하기도 한다. 이 경우에는 State 객체가 트리의 새로운 위치에 적응할 수 있는 기회를 주기 위해 build()를 호출한다.
- dispose()
- 해당 위젯이 위젯트리에서 제거됐을 때 실행된다. 더이상 빌드되지 않는다는 의미이다.
- reassemble()
- hot reload 를 실행하면 reassemble()이 호출된다. reassemble() 이 호출되면 build()도 호출이 된다.
반응형
'# 02 > Flutter' 카테고리의 다른 글
[Flutter] 렌더링 원리 (0) | 2023.02.02 |
---|---|
[Flutter] isolate / embedder / taskRunner (0) | 2023.02.02 |
[Flutter] Widget / Stateless Widget / Stateful Widget / Inherited Widget (0) | 2023.02.02 |
[Flutter] Fuchsia 란? (0) | 2023.02.02 |
[Flutter] Flutter가 Dart 언어를 사용 하는 이유! (0) | 2023.02.01 |