728x90
반응형
Flutter 위젯의 라이프사이클
Flutter 위젯은 일련의 라이프사이클 단계를 거칩니다. 이러한 라이프사이클은 위젯이 어떻게 생성되고, 업데이트되며, 소멸되는지를 결정합니다.
1. 위젯 생성 (Widget Creation)
- 위젯 생성자는 클래스의 초기 값이나 상태를 설정합니다.
- StatefulWidget의 경우, 위젯을 생성하면 State 객체도 생성됩니다.
- 이 과정에서 위젯이 초기 상태로 어떻게 설정될지 정의됩니다.
- 위젯은 Immutable(불변)이므로, 생성 후 값이 변경되지 않습니다.
- 각 위젯의 동작은 생성 시점에 결정됩니다.
2. build 메서드 호출
- build() 메서드는 위젯의 UI를 결정합니다.
- 트리 구조로 위젯을 배치하며, 자식 위젯들도 생성됩니다.
- Flutter는 효율적인 렌더링을 위해 필요한 위젯만 다시 빌드합니다.
- StatelessWidget은 주로 이 메서드를 통해 UI를 업데이트합니다.
- 이 단계는 위젯의 시각적 표현이 정의되는 단계입니다.
3. 위젯 트리에 추가
- build 메서드에서 반환된 위젯이 트리에 배치됩니다.
- 위젯 트리는 부모-자식 관계로 구성됩니다.
- 위젯 트리는 Flutter의 렌더링 엔진에 의해 관리됩니다.
- 트리에서 각 위젯은 특정 위치에 고유한 역할을 가집니다.
- 이 과정이 끝나면 화면에 위젯이 실제로 표시됩니다.
4. 상태 변경
- 상태가 변경되면 **setState()**가 호출됩니다.
- 이 메서드는 변경 사항을 알리며, Flutter는 필요 시 위젯을 다시 빌드합니다.
- 상태 변경 시 부분적인 UI 업데이트가 일어납니다.
- 변경된 상태에 따라 새로운 위젯 트리가 생성됩니다.
- 이 과정에서 성능을 위해 효율적인 재빌드를 수행합니다.
5. 위젯 업데이트
- 부모 위젯의 재구성, 상태 변경 등이 발생하면 위젯이 업데이트됩니다.
- build() 메서드가 다시 호출되어 새 UI가 생성됩니다.
- Flutter는 효율적으로 위젯 트리를 다시 빌드하여 성능을 유지합니다.
- 트리에서 동일한 위치에 있더라도 위젯의 데이터나 상태는 새로고침됩니다.
- 이 과정에서 최소한의 변경만 적용하여 렌더링 성능을 최적화합니다.
6. 위젯 제거
- **dispose()**는 위젯이 트리에서 제거될 때 호출됩니다.
- 위젯이 사용하는 모든 리소스를 이 단계에서 해제합니다.
- 타이머, 스트림 리스너 등의 객체를 이 단계에서 정리합니다.
- 메모리 누수를 방지하기 위해 필수적인 단계입니다.
- 이 후, 위젯은 완전히 소멸하고 더 이상 사용되지 않습니다.
주의점
- StatelessWidget은 상태가 없으며 build() 메서드만 사용됩니다.
- StatefulWidget은 다양한 상태 메서드(예: initState(), setState(), dispose())를 통해 라이프사이클을 관리합니다.
- 이 라이프사이클을 이해하면 더 효율적이고 성능이 좋은 앱을 개발할 수 있습니다.
- 위젯이 더 이상 사용되지 않거나 트리에서 제거될 때, dispose() 메서드가 호출됩니다. 이 단계에서는 리소스 해제와 정리 작업이 이루어집니다.
- 위젯의 상태가 변경되거나 부모 위젯이 재구성되면, build() 메서드는 다시 호출되어 위젯이 업데이트됩니다. 이 과정에서 Flutter는 불필요한 위젯 재생성을 최소화하며, 효율적으로 UI를 관리합니다.
- StatefulWidget은 setState() 메서드를 통해 상태가 변경될 수 있습니다. 이 메서드가 호출되면 Flutter는 위젯의 상태를 업데이트하고, build() 메서드를 다시 호출하여 UI를 업데이트합니다.
- build() 메서드가 반환한 위젯은 위젯 트리에 추가됩니다. 이 단계에서 위젯은 Flutter의 위젯 트리에서 부모-자식 관계로 연결되며, 애플리케이션의 UI로 표시됩니다.
- 위젯이 생성된 후, build() 메서드가 호출됩니다. 이 메서드는 위젯이 어떻게 화면에 렌더링될지를 결정하는 중요한 부분입니다. 반환되는 위젯 트리는 UI 요소를 구성합니다.
- Flutter에서 위젯이 생성되는 첫 번째 단계는 위젯의 생성자에서 인스턴스화되는 과정입니다. 위젯의 초기 상태나 데이터를 설정하는 이 단계는 위젯의 전반적인 동작을 결정하는 중요한 시점입니다. StatefulWidget의 경우 상태 객체도 생성됩니다.
이렇게 Flutter 위젯은 생성부터 소멸까지 명확한 라이프사이클을 가집니다. 이 라이프사이클을 이해하면 더 효과적인 앱 개발이 가능합니다.
728x90
반응형