Never give up

Flutter - WidgetsBindingObserver 본문

Flutter

Flutter - WidgetsBindingObserver

대기만성 개발자 2021. 5. 22. 00:04
반응형

유저가 앱을 잠깐 pause(terminate 아닙니다) 시켰을 때

 

어떤 작동을 중단하거나 다시 돌아왔을 때 특정한 이벤트를 발생시켜주거나 할 때

 

어떻게 처리해야될지 고민이 많이 될텐데

 

이 부분을 WidgetsBindingObserver를 통해 간단하게 해결할 수 있습니다

 

class _ObserverExampleState extends State<ObserverExample>
    with WidgetsBindingObserver {
  String _text = 'Wait';

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance!.addObserver(this);
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    switch (state) {
      case AppLifecycleState.resumed:
        setState(() {
          _text = 'Resumed!';
        });
        print('resumed');
        break;
      case AppLifecycleState.inactive:
        print('inactive');
        break;
      case AppLifecycleState.detached:
        print('detached');
        break;
      case AppLifecycleState.paused:
        print('paused');
        break;
      default:
        break;
    }
  }

  @override
  void dispose() {
    WidgetsBinding.instance!.removeObserver(this);
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: Text(widget.title)),
        body: Center(child: Text(_text)));
  }
}

해당 예제는 간단하게 유저가 잠깐 pause 시켰다가 돌아왔을 때

 

setState를 해서 text를 바꿔주는 간단한 예제인데

 

이걸 어디다 써먹지라는 생각이 들수도 있는데

 

간단한 예를 들어보자면 타사 서비스를 이용하기 위해 잠시동안 앱을 나갔다가

 

다시 돌아왔을 때 특정한 처리를 해준다거나

 

권한 요청을 위해 설정화면을 불러온 후 다시 앱으로 돌아왔을 때 재확인 할 때 등등

 

의외로 사용할 부분이 많습니다

반응형
Comments