Flutter 앱 개발에서 앱의 상태 변화에 맞춰 적절하게 동작하는 것은 중요합니다. WidgetsBinding, WidgetsBindingObserver, didChangeAppLifecycleState()는 앱의 라이프 사이클을 관리하는 데 중요한 역할을 하는 클래스와 메서드입니다.
1. WidgetsBinding
WidgetsBinding은 Flutter 앱의 핵심적인 클래스 중 하나입니다. 앱의 윈도우, 렌더링, 앱 라이프 사이클 관리 등을 담당합니다. WidgetsBinding은 다음과 같은 기능을 제공합니다.
- 앱 윈도우 관리: 앱 윈도우를 생성하고 관리합니다.
- 렌더링 파이프라인 관리: 앱 UI를 렌더링하는 파이프라인을 관리합니다.
- 앱 라이프 사이클 관리: 앱의 시작, 종료, 백그라운드/포그라운드 전환 등을 관리합니다.
- 이벤트 처리: 사용자 입력 이벤트를 처리합니다.
2. WidgetsBindingObserver
WidgetsBindingObserver는 앱 라이프 사이클 변화를 관찰하는 데 사용되는 추상 클래스입니다. 앱 개발자는 WidgetsBindingObserver를 상속받아 앱의 상태 변화에 따라 처리할 코드를 구현할 수 있습니다. WidgetsBindingObserver는 다음과 같은 메서드를 제공합니다.
- didChangeAppLifecycleState(AppLifecycleState state): 앱의 라이프 사이클 상태가 변할 때마다 호출됩니다.
- didChangeLocale(Locale locale): 앱의 로케일이 변경될 때 호출됩니다.
- didChangeMetrics(Metrics metrics): 앱의 화면 크기, 방향 등 메트릭 정보가 변경될 때 호출됩니다.
3. didChangeAppLifecycleState()
didChangeAppLifecycleState()는 앱의 라이프 사이클 상태가 변할 때마다 호출되는 메서드입니다. 이 메서드를 사용하여 앱의 상태 변화에 따라 적절한 동작을 구현할 수 있습니다. didChangeAppLifecycleState()는 다음과 같은 인수를 받습니다.
- state: 앱의 현재 라이프 사이클 상태 (AppLifecycleState enum 값)
didChangeAppLifecycleState() 예시
다음은 didChangeAppLifecycleState() 메서드를 사용하여 앱의 상태 변화에 따라 UI를 변경하는 예시입니다.
class MyObserver extends WidgetsBindingObserver {
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state) {
case AppLifecycleState.resumed:
// 앱이 포그라운드로 돌아왔을 때 UI를 활성화합니다.
break;
case AppLifecycleState.inactive:
// 앱이 백그라운드로 이동할 때 UI를 비활성화합니다.
break;
case AppLifecycleState.paused:
// 앱이 일시 중지될 때 UI를 숨깁니다.
break;
default:
break;
}
}
}
'new' 카테고리의 다른 글
Dart의 읽기 전용 getter (0) | 2024.03.11 |
---|---|
Flutter의 GlobalKey란? (0) | 2024.03.11 |
Dart Mixin: 코드 재사용을 위한 강력한 도구 (0) | 2024.03.07 |
Flutter App Lifecycle 이해하기: AppLifecycleState enum (0) | 2024.03.07 |
Hot Reload와 Hot Restart (0) | 2024.03.07 |