일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 파이어베이스
- page
- 바인딩
- 플러터
- spring boot
- HTML
- Maui
- listview
- Flutter
- 마우이
- Animation
- typescript
- 깃허브
- MSSQL
- 함수
- 오류
- .NET
- 애니메이션
- GitHub
- MVVM
- 닷넷
- MS-SQL
- Binding
- db
- 자바스크립트
- 리엑트
- React JS
- Firebase
- AnimationController
- JavaScript
Archives
- Today
- Total
개발노트
43. [Flutter] 앱 생명주기 (with WidgetsBindingObserver) 본문
반응형
Flutter LifeCycle 이용하기
Flutter 애플리케이션의 Life Cycle(생명주기)은 애플리케이션이 시작되고 종료될 때 다양한 이벤트와 상태 변화를 관리하는 중요한 부분입니다.
Flutter 애플리케이션의 라이프사이클은 다음과 같은 주요 단계로 나눌 수 있습니다:
- resumed:
애플리케이션이 활성화된 상태입니다.
사용자가 앱을 화면에 보고 상호작용하는 상태입니다. - inactive:
애플리케이션이 비활성화된 상태입니다.
다른 앱으로 전환하거나 홈 버튼을 누른 경우 앱이 이 상태로 전환됩니다. - paused:
애플리케이션이 일시정지된 상태입니다.
전화가 오거나 다른 중요 이벤트로 앱이 일시정지될 때 발생합니다. - detached:
애플리케이션이 분리된 상태입니다.
이 상태는 애플리케이션이 완전히 종료되었을 때 발생하며, 앱이 백그라운드에서 실행되지 않을 때 나타납니다.
이러한 라이프사이클 상태는 WidgetsBindingObserver 인터페이스를 구현하여 감지하고 처리할 수 있습니다. 예를 들어, didChangeAppLifecycleState 메서드를 사용하여 애플리케이션 라이프사이클 상태 변화를 처리할 수 있습니다.
다음은 WidgetsBindingObserver를 사용하여 애플리케이션 라이프사이클 상태를 처리하는 예제 코드입니다:
import 'package:flutter/widgets.dart';
class MyAppState extends State<MyApp> with WidgetsBindingObserver {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
// 애플리케이션이 활성화된 상태
} else if (state == AppLifecycleState.inactive) {
// 애플리케이션이 비활성화된 상태
} else if (state == AppLifecycleState.paused) {
// 애플리케이션이 일시정지된 상태
} else if (state == AppLifecycleState.detached) {
// 애플리케이션이 분리된 상태
}
}
@override
Widget build(BuildContext context) {
// 앱 UI 빌드
}
}
- WidgetsBindingObserver 를 with 문과 함께 사용하여 didChangeAppLifecycleState() 메소드를 override 합니다.
- didChangeAppLifecycleState() 안에 생명주기를 이용하여 inactive 상태일 때 controller들을 dispose() 했다가 resumed 상태일 때 initialize() 할 수 있습니다.
반응형
'앱 개발 > Flutter' 카테고리의 다른 글
45. [Flutter] 앱 전체에 데이터 공유 및 수정하기, 상태 관리(with ChangeNotifier, ValueNotifier) (0) | 2023.11.09 |
---|---|
44. [Flutter] InheritedWidget 로 위젯 트리에 데이터 공유하기 (0) | 2023.11.09 |
42. [Flutter] ImagePicker 앨범 이미지, 동영상 가져오기 및 촬영하기 (0) | 2023.11.07 |
41. [Flutter] Camera 녹화하고 gallery_saver 로 영상 저장하기 (with Permission_handler 장치 (0) | 2023.11.02 |
40. [Flutter] GoRouter 사용하기 (Navigator 2.0) (1) | 2023.10.23 |
Comments