didChangeAppLifecycleState
는 앱의 라이프사이클 상태가 변경될 때마다 호출된다. with WidgetsBindingObserver
을 사용하여 만들어준다addObserver
를 initState
에 호출해준다removeObserver
를 호출하여 메모리제거시 호출해준다didChangeAppLifecycleState
를 사용해 활동이 감지될때마다 원하는 함수를 실행할 수 있다사용 앱에 따라 다양하게 호출 될 수 있다
나는 메인페이지, 레이아웃 위젯 (서브페이지) 에서 사용했더니 너무 자주 감지되지도 적게 감지되지도 않아서 일단 두군데서 호출했다.
앱을 사용해보고 너무 자주 호출 되는 것같으면 서브페이지에서는 빼도 될 것같기도 함
import 'package:flutter/material.dart';
class HomePage extends StatefulWidget {
_HomePageState createState() => _HomePageState();
}
// WidgetsBindingObserver 사용
class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
void initState() {
super.initState();
WidgetsBinding.instance?.addObserver(this);
// 최초로 실행할 코드 실행
}
void dispose() {
WidgetsBinding.instance?.removeObserver(this);
super.dispose();
}
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
if (state == AppLifecycleState.resumed) {
// 감지되었을때 필요한 코드 실행
}
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Home Page'),
),
body: Center(
child: Text('Welcome to the home page'),
),
);
}
}