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를 바꿔주는 간단한 예제인데
이걸 어디다 써먹지라는 생각이 들수도 있는데
간단한 예를 들어보자면 타사 서비스를 이용하기 위해 잠시동안 앱을 나갔다가
다시 돌아왔을 때 특정한 처리를 해준다거나
권한 요청을 위해 설정화면을 불러온 후 다시 앱으로 돌아왔을 때 재확인 할 때 등등
의외로 사용할 부분이 많습니다
반응형