Flutter에서 StatefulWidget과 StatelessWidget의 라이프사이클
Flutter는 두 가지 주요 유형의 위젯을 제공합니다: **StatefulWidget**과 StatelessWidget. 이 두 위젯의 가장 큰 차이점은 상태 관리입니다. **StatelessWidget**은 상태가 변하지 않는 위젯을 나타내며, **StatefulWidget**은 상태가 변할 수 있는 위젯을 나타냅니다. 이 글에서는 두 위젯의 라이프사이클을 자세히 살펴보겠습니다.
StatelessWidget의 라이프사이클
**StatelessWidget**은 상태가 변하지 않는 위젯입니다. 따라서 한 번 생성되면 다시 빌드되지 않습니다. **StatelessWidget**의 라이프사이클은 매우 간단합니다:
- 생성자 호출: 위젯이 처음 생성될 때 호출됩니다.
- build() 메서드 호출: 위젯의 UI를 구성하는 메서드입니다. 이 메서드는 위젯이 처음 생성될 때 한 번 호출됩니다.
Dart
class MyStatelessWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Text('Hello, StatelessWidget!'); } }
AI가 생성한 코드입니다. 신중하게 검토하고 사용하세요. FAQ의 자세한 정보.
StatefulWidget의 라이프사이클
**StatefulWidget**은 상태가 변할 수 있는 위젯입니다. 따라서 상태가 변경될 때마다 다시 빌드됩니다. **StatefulWidget**의 라이프사이클은 다음과 같습니다:
- createState(): State 객체를 생성합니다. 이 객체는 위젯의 모든 변경 가능한 상태를 유지합니다.
- initState(): State 객체가 처음 생성될 때 호출됩니다. 초기화 작업을 수행할 수 있습니다.
- didChangeDependencies(): 위젯의 종속성이 변경될 때 호출됩니다.
- build(): 위젯의 UI를 구성하는 메서드입니다. 상태가 변경될 때마다 호출됩니다.
- setState(): 상태를 변경하고, build() 메서드를 다시 호출하여 UI를 업데이트합니다.
- deactivate(): 위젯이 트리에서 제거될 때 호출됩니다.
- dispose(): 위젯이 완전히 제거될 때 호출됩니다. 리소스를 해제할 수 있습니다.
Dart
`class MyStatefulWidget extends StatefulWidget { @override _MyStatefulWidgetState createState() => _MyStatefulWidgetState(); }
class _MyStatefulWidgetState extends State<MyStatefulWidget> { @override void initState() { super.initState(); // 초기화 작업 }
@override Widget build(BuildContext context) { return Text('Hello, StatefulWidget!'); }
@override void dispose() { // 리소스 해제 작업 super.dispose(); } }`
AI가 생성한 코드입니다. 신중하게 검토하고 사용하세요. FAQ의 자세한 정보.
결론
**StatelessWidget**과 **StatefulWidget**의 라이프사이클을 이해하면 Flutter 애플리케이션의 상태 관리를 더 효과적으로 할 수 있습니다. **StatelessWidget**은 상태가 변하지 않는 간단한 UI 요소에 적합하며, **StatefulWidget**은 사용자 상호작용이나 데이터 변경에 따라 UI가 업데이트되어야 하는 경우에 적합합니다.
'[개발] 이야기 > [Flutter] 이야기' 카테고리의 다른 글
flutter Dart언어 1.0부터의 변화과정 : 어떻게 변화했는데 알면 어떻게 변할지 알게 됩니다. (0) | 2024.07.26 |
---|---|
flutter 상태관리 중 가강 강력하고 쉬운 라이브러리 Riverpod - a to z (0) | 2024.07.25 |
모바일 크로스 플랫폼 프레임워크의 개념과 발전 히스토리를 알아보자 쉽게(플루터의 탄생과정) (1) | 2024.07.23 |
flutter 앱 기본정보 가져오기(app version, app name, pakage name, build number) (0) | 2024.07.22 |
flutter - sealed class 상태 패턴 사용 방법(freezed when legacy) (0) | 2024.07.10 |
댓글