[Flutter] 라이프 사이클을 관찰 하는 WidgetsBindingObserver

hodu·2024년 3월 29일
0

Flutter

목록 보기
30/30

앱을 구현하다 보면, 백그라운드 및 기본 위젯이 제공하는 override 메서드들 외에도
추가적인 감지 기능이 필요할 때가 있습니다.

그를 위한 것이, WidgetsBindingObserver 입니다.

https://api.flutter.dev/flutter/widgets/WidgetsBindingObserver-class.html


Methods

didChangeAccessibilityFeatures()
- 접근성 설정 변경 감지 
- 접근성 기능 활성화/비활성화 감지
- 테마 변경 감지 (다크 모드/라이트 모드)

didChangeAppLifecycleState(AppLifecycleState state)
- 앱 활성화/비활성화 감지
- 앱 종료 감지
- 앱 상태 관리

didChangeLocales(List<Locale>? locales)
- 언어 변경 감지
- 지역별 리소스 관리
- 다국어 지원

didChangeMetrics()
- 디바이스 방향 변경 감지
- 디바이스 해상도 변경 감지
- 화면 크기 변경 감지

didChangePlatformBrightness()
- 시스템 테마 변경 감지
- 밝기 모드 변경 감지
- 테마 및 스타일 변경 감지

didChangeTextScaleFactor()
- 텍스트 크기 변경 감지

didHaveMemoryPressure() 
- 메모리가 부족한 상태 감지

didPopRoute()
- 화면 이동 감지(이전 화면으로 돌아가는 경우)

didPushRoute(String route) 
- 화면 이동 감지

didPushRouteInformation(RouteInformation routeInformation) 
- 새로운 라우트 정보 푸시 감지

didRequestAppExit() 
- 앱 종료 감지

Code

class ExamplePage extends StatefulWidget {
	
  	State<ExamplePage> createState() => _ExamplePageState();
}

// with WidgetsBindingObserver 를 추가
class _ExamplePageState extends State<ExamplePage> with WidgetsBindingObserver {
	
	void initState() {
    	super.initState();
        // 앱의 생명주기를 관찰할 수 있도록 WidgetsBinding에 현재 인스턴스를 등록
        WidgetsBinding.instance.addObserver(this);        
    }

	// 위 Methods에서 사용하려는 메서드 override
	
	void didChangeMetrics() {
  		// 기능 작성
	}
  
  	
	void dispose() {
		// 메모리 누수를 방지하기 위해 해제
		WidgetsBinding.instance.removeObserver(this);
		super.dispose();
  	}
}



참고 문서:
https://velog.io/@dev_seonhan/Flutter-WidgetsBindingObserver

profile
Flutter developer

0개의 댓글