余姚微信网站建设,北京seo怎么优化,百度网页制作html,WordPress初始化主题文章目录 1. 概念介绍2. 生命周期及其方法2.1 生命周期2.2 回调方法2.3 使用方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了显示Snackbar的另外一种方法相关的内容#xff0c;本章回中将介绍如何监听组件的生命周期.闲话休提#xff0c;让我们一起Talk Flu… 文章目录 1. 概念介绍2. 生命周期及其方法2.1 生命周期2.2 回调方法2.3 使用方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了显示Snackbar的另外一种方法相关的内容本章回中将介绍如何监听组件的生命周期.闲话休提让我们一起Talk Flutter吧。 1. 概念介绍
我们在第八十二回中介绍过Widget的生命周期主要介绍了生命周期的概念以及生命周期的回调方法不这我们介绍的生命周期回调方法都是组件自带的方法我们在本 章回中将介绍其它的生命周期方法这些生命周期方法不是组件自带的它们具体是什么呢让我们一起去看看吧。
2. 生命周期及其方法
2.1 生命周期
我们在本章回介绍的生命周期和之前博客中介绍的类似不过生命周期的状态稍微有点不同这些状态主要来自widgestOvserver这个抽象类它提供了相关的状态来 表示组件的生命周期详细如下
AppLifecycleState.resumed: 当组件重新运行时可以监听到此状态AppLifecycleState.inactive: 当组件可见时可以监听到此状态AppLifecycleState.paused: 当组件不可见时可以监听到此状态AppLifecycleState.detached: 当组件销毁时可以监听到此状态
2.2 回调方法
介绍完组件的生命周期后我们接着介绍与生命周期相对应的生命周期方法这些方法也是来自widgestOvserver这个抽象类
didPopRoute()didPushRoute()didChangeMetrics()didChangePlatformBrightness()didChangeLocales()didChangeAppLifecycleState()didHaveMemoryPressure() 这些回调方法主要用来监听不同的功能这个从方法的名称中就可以看出来如果我们只想监听组件的生命周期那么只需要重写didChangeAppLifecycleState() 方法就可以该方法包含一个AppLifecycleState类型的参数从参数中可以获取组件在生命周期中的状态也就是我们在上一小节中介绍的状态。
2.3 使用方法
接下来我们介绍如何监听组件的生命周期下面是详细的实现步骤
把需要被监听的组件类组合(minxin)widgestOvserver抽象类在被监听组件的initState()方法中注册监听器在disPose()方法中销毁监听器在组件类中重写组合类中的方法,在重写方法时可以监听各种系统事件 我们在这里只通过文本来是介绍在接下来的小节中将通过具体的示例代码来演示。此外上面步骤中提到的被监听的组件只能是MaterialApp的子组件其它组件无法 监听到生命周期的状态或者说不会回调生命周期方法。这点需要特别注意一下。
3. 示例代码
///WidgetsBindingObserver只有放到MaterialApp的子组件下可以监听到消息放在其它widget中无法监听到消息
class _MyHomePageState extends StateMyHomePage with WidgetsBindingObserver{///注意需要在initState中注册监听器并且在disPose中销毁监听器overridevoid didChangeAppLifecycleState(AppLifecycleState state) {debugPrint( app state: $state);super.didChangeAppLifecycleState(state);}overrideWidget build(BuildContext context) {}overridevoid initState() {super.initState();debugPrint(HomePage initState);WidgetsBinding.instance.addObserver(this);}overridevoid 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)看不到只有结束时的日志才能被看到。
4. 内容总结
最后 我们对章回的内容做一个全面的总结
我们可以组合widgestOvserver类进而监听组件的生命周期在widgestOvserver中包含了多个回调方法除了可以监听组件的生命周期外还可以监听其它的系统事件我们介绍的widgestOvserver类主要用来监听整个App可以响应的事件而不是单个页面响应的事件 最后我们再次强调一下widgestOvserver必须用在MaterialApp的home属性对应的Widget上也就是MaterialApp的子组件。该类放在其它Widget上不起作 用。因此我们主要通过该类来监听整个App的生命周期以及其它的系统事件而不是单个页面的生命周期事件。 看官们与如何监听组件的生命周期相关的内容就介绍到这里欢迎大家在评论区交流与讨论!