赞
踩
我们在第八十二回中介绍过Widget的生命周期,主要介绍了生命周期的概念以及生命周期的回调方法,不这我们介绍的生命周期回调方法都是组件自带的方法,我们在本
章回中将介绍其它的生命周期方法,这些生命周期方法不是组件自带的,它们具体是什么呢?让我们一起去看看吧。
我们在本章回介绍的生命周期和之前博客中介绍的类似,不过生命周期的状态稍微有点不同,这些状态主要来自widgestOvserver这个抽象类,它提供了相关的状态来
表示组件的生命周期,详细如下:
介绍完组件的生命周期后,我们接着介绍与生命周期相对应的生命周期方法,这些方法也是来自widgestOvserver这个抽象类:
接下来我们介绍如何监听组件的生命周期,下面是详细的实现步骤:
///WidgetsBindingObserver只有放到MaterialApp的子组件下可以监听到消息,放在其它widget中无法监听到消息
class _MyHomePageState extends State<MyHomePage> with WidgetsBindingObserver{
///注意:需要在initState中注册监听器并且在disPose中销毁监听器
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
debugPrint(" app state: $state");
super.didChangeAppLifecycleState(state);
}
@override
Widget build(BuildContext context) {}
@override
void initState() {
super.initState();
debugPrint('HomePage initState');
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
super.dispose();
WidgetsBinding.instance.removeObserver(this);
debugPrint('HomePage dispose');
}
}
在示例代码中我们重写了didChangeAppLifecycleState()这个回调方法,build方法中的内容省略不写,此外,_MyHomePageState这个类是MaterialApp组件
的子组件,只是我们在代码中省略了MaterialApp组件。编译并且运行上面的程序,同时把整个App切换到后台,可以得到下面运行结果:
I/flutter (13892): app state: AppLifecycleState.inactive
I/flutter (13892): app state: AppLifecycleState.paused
I/flutter (13892): app state: AppLifecycleState.detached
从上面的运行结果中可以看到组件生命周期的状态,不过启动时的日志(onResume)看不到,只有结束时的日志才能被看到。
最后, 我们对章回的内容做一个全面的总结:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。