Flutter App 的生命周期
2019-07-10 本文已影响0人
向上_d821
AppLifecycleState 就是 App 的生命周期,有:
- resumed
- inactive
- paused
- suspending
怎么判断 Flutter 是在前台还是在后台,就需要使用到 WidgetsBindingObserver 了
class _MyHomePageState extends State<MyHomePage> with WidgetsBindingObserver {
// initState 里添加监听
@override
void initState(){
super.initState();
WidgetsBinding.instance.addObserver(this);
}
//dispose 里移除监听
@override
void dispose() {
// TODO: implement dispose
super.dispose();
WidgetsBinding.instance.removeObserver(this);
}
//重写didChangeAppLifecycleState
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
switch(state){
case AppLifecycleState.resumed:
print(AppLifecycleState.resumed);
break;
case AppLifecycleState.inactive:
print(AppLifecycleState.inactive);
break;
case AppLifecycleState.paused:
print(AppLifecycleState.paused);
break;
case AppLifecycleState.suspending:
print(AppLifecycleState.suspending);
break;
}
}
}
app由可见显示切换到后台(home状态)
07-10 15:11:10.062 19005-19561/com.example.flutterapp I/flutter: AppLifecycleState.inactive
07-10 15:11:10.524 19005-19561/com.example.flutterapp I/flutter: AppLifecycleState.paused
app由后台切回前台(用户可见)
07-10 15:11:54.836 19005-19561/com.example.flutterapp I/flutter: AppLifecycleState.inactive
07-10 15:11:54.837 19005-19561/com.example.flutterapp I/flutter: AppLifecycleState.resumed