자니노트

flutter WidgetsBindingObserver 설명 및 사용법 - 앱 생명주기 이벤트 처리 본문

모바일 개발/Dart&Flutter

flutter WidgetsBindingObserver 설명 및 사용법 - 앱 생명주기 이벤트 처리

zaninote 2023. 8. 22. 15:15

WidgetsBindingObserver는 Flutter에서 앱 생명주기 이벤트를 감지하기 위한 인터페이스입니다. 이를 사용하면 앱이 백그라운드로 이동하거나 포그라운드로 돌아올 때, 화면 크기가 변경될 때 등의 이벤트를 감지하고 적절한 동작을 수행할 수 있습니다.

 

주요 메서드:

  • didChangeAppLifecycleState: 앱의 생명주기 상태가 변경될 때 호출됩니다. 예를 들어, 앱이 백그라운드로 이동하거나 포그라운드로 돌아올 때 이 메서드가 호출됩니다.
  • didChangeMetrics: 화면의 크기나 방향, 텍스트 크기 등이 변경될 때 호출됩니다.
  • didChangePlatformBrightness: 플랫폼의 밝기 모드 (예: 다크 모드)가 변경될 때 호출됩니다.

사용 방법:

  • WidgetsBindingObserver를 구현하는 클래스를 생성합니다.
  • 필요한 메서드를 오버라이드합니다.
  • WidgetsBinding.instance.addObserver를 사용하여 옵저버를 추가합니다.
  • WidgetsBinding.instance.removeObserver를 사용하여 옵저버를 제거합니다.
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

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) {
    super.didChangeAppLifecycleState(state);
    print('AppLifecycleState: $state');
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(child: Text('WidgetsBindingObserver Example')),
      ),
    );
  }
}

위의 예제에서는 WidgetsBindingObserver를 사용하여 앱의 생명주기 상태 변경을 감지하고 콘솔에 출력합니다. 

이와 같은 방법으로 다른 메서드도 오버라이드하여 다양한 이벤트를 감지하고 처리할 수 있습니다.

Comments