第三百九十五回

文章目录

  • 1. 概念介绍
  • 2. 生命周期状态与方法
    • 2.1 生命周期状态
    • 2.2 生命周期方法
    • 2.3 使用方法
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"如何监听组件的生命周期"相关的内容,本章回中将介绍生命周期库:Lifecycle.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在本章回中将介绍一个可以监听组件生命周期的库:Lifecycle,这个库是咱们国内开发人员编写的,已经在Github上开源,该库可以监听到组件的生命周期,它
可以像原生开发中的onCreate,onResume等生命周期方法一样去使用,本章回中将详细介绍它的使用方法。

2. 生命周期状态与方法

2.1 生命周期状态

在Lifecycle库中有以下的生命周期事件,它和我们通常说的生命周期状态相关联,详细如下:

  • pop :表示组件从路由导航栈中弹出,此时会回调dispose方法;
  • push, :表示组件进入路由导航栈中,此时会回调initState方法;
  • visible, :表示组件处于可见状态,类似onStart方法;
  • active, :表示组件处于可获取焦点状,类似onResume方法;
  • inactive, :表示组件处于不可见状态,类似onPause方法;
  • invisible, :表示组件处于不可见状态,类似onStop方法;

2.2 生命周期方法

Lifecycle库提供的生命周期方法比较少,常用的是onLifecycleEvent(),该方法包含一个参数,参数的值为我们在上一个小节中介绍的生命周期事件,我们重写
这个生命周期方法后可以通过方法的参数获取到组件的生命周期事件。我们将在后面的小节中介绍具体的细节。

2.3 使用方法

介绍完库中提供的生命周期事件和生命周期方法后,我们介绍如何使用它们,详细如下:

  • 在MaterialApp中设置navigatorObservers属性用来监听路由;
  • 在组件中组合Lifecycle库中的类LifecycleAware和LifecycleMixin;
  • 在组件中重写Lifecycle库中的生命周期方法onLifecycleEvent;
  • 在onLifecycleEvent这个生命周期方法中监听组件的生命周期事件;
    我们在这里只介绍了一种使用方法,该库还提供了其它的使用方法,大家可以参考官方给的文档。

3. 示例代码

MaterialApp(navigatorObservers: [defaultLifecycleObserver,],
)class _ExPageLifeCycleState extends State<ExPageLifeCycle> with WidgetsBindingObserver,LifecycleAware,LifecycleMixin{void onLifecycleEvent(LifecycleEvent event) {/// TODO: implement onLifecycleEventdebugPrint("life event: $event");switch(event) {case LifecycleEvent.visible:break;case LifecycleEvent.active:break;case LifecycleEvent.inactive:break;case LifecycleEvent.invisible:break;case LifecycleEvent.push:break;case LifecycleEvent.pop:break;}}
}

上面的示例代码依据上一小节中介绍的使用方法编写,代码中在重写生命周期方法时只是通过日志输出生命周期事件,没有添加任何的业务逻辑,大家可以在switch的每
个case中依据不同的生命周期事件添加不同的业务逻辑。

4. 内容总结

我们在本章回中介绍的Lifecycle库可以看作是上一章回内容的扩展,因为上一章回介绍的widgestOvserver类主要用来监听整个App的生命周期,而本章回中介绍的
Lifecycle库主要用来监听单个组件的生命周期,这两个内容可以配合使用。最后,我们对本章回中内容做一个全面的总结:

  • Lifecycle库提供了不同的生命周期事件,类似原生开发中Actiivty的生命周期方法;
  • Lifecycle库提供的生命周期方法比较简单,主要用来监听生命周期事件;
  • Lifecycle库可以通过组合类的方式使用,还可以通过其它方式来使用;
    看官们,与"生命周期库:LifeCycle"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/737324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python-Pong-Game

我还加了音效&#xff0c;类似于小时候游戏机上的弹球游戏 import os import turtle import pygame#初始化pygame pygame.init()#加载声音文件 bounce_sound pygame.mixer.Sound("bounce.mp3")wn turtle.Screen() wn.title("Pong by ") wn.bgcolor(&qu…

力扣题目训练(18)

2024年2月11日力扣题目训练 2024年2月11日力扣题目训练561. 数组拆分566. 重塑矩阵572. 另一棵树的子树264. 丑数 II274. H 指数127. 单词接龙 2024年2月11日力扣题目训练 2024年2月11日第十八天编程训练&#xff0c;今天主要是进行一些题训练&#xff0c;包括简单题3道、中等…

光栅化处理(Rasterization)

1.垂直可视角度 ​ 通常使用不同镜头的相机拍摄同一物品的时候&#xff0c;其可以看到的物体的范围是不同的&#xff0c;那么如何表示这一镜头下摄像机所能看到的范围呢&#xff1f;我们定义了一个概念——可视角。如下图所示(两条红线所框出来的角)&#xff1a; 实际上当我们…

LoadBalancer 客户端的负载均衡器+openFeign 请求转发

LoadBalancer Spring Cloud LoadBalancer是Spring Cloud中负责客户端负载均衡的模块&#xff0c;其主要原理是从nacos中获取服务列表通过选择合适的服务实例来实现负载均衡。 源码跟踪 可以看到这里的intercept()方法&#xff0c;拦截了用户的HttpRequest请求&#xff0c;然…

【鸿蒙 HarmonyOS 4.0】通知

一、介绍 通知旨在让用户以合适的方式及时获得有用的新消息&#xff0c;帮助用户高效地处理任务。应用可以通过通知接口发送通知消息&#xff0c;用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应用&#xff0c;通知主要有以下使用场景&#xff1a; 显示接…

ctfshow web入门 php特性 web146-web150

1.web146 :被过滤了&#xff0c;三元运算符用不了&#xff0c;还可以用位运算符&#xff0c;逻辑运算符,等&#xff0c;逻辑运算符要注意或运算符的短路性 eval(return 1|phpinfo()|1) eval(return 1phpinfo()|1) payload&#xff1a; v11&v20&v3(~%8C%86%8C%8B%9A%92…

粉嘟嘟的免费wordpress模板

粉色好看的wordpress免费模板&#xff0c;用免费wordpress模板也可以搭建网站。 https://www.wpniu.com/themes/11.html

产品开发流程的意义:确保事情做正确——以苹果公司的iPhone为例

产品开发流程的意义&#xff1a;确保事情做正确——以苹果公司的iPhone为例 在当今高度竞争的商业环境中&#xff0c;产品开发流程的重要性愈发凸显。一个精心设计和执行的产品开发流程不仅确保了产品开发的顺利进行&#xff0c;同时也为产品的质量和市场竞争力提供了坚实的保…

Anaconda 的一些配置

Anaconda 安装及修改环境默认位置 https://blog.csdn.net/qq_54562136/article/details/128932352 最重要的一步&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;改文件夹权限 Anaconda创建、激活、退出、删除虚拟环境 修改pip install 默认安装路径

你真的用对了知识管理系统了吗?这篇文章教会你

面对信息化社会的信息爆炸&#xff0c;知识管理系统如同一艘救生船&#xff0c;帮助我们捕捉、储存、共享重要的知识&#xff0c;并提高工作效率。但是&#xff0c;你真的用对了知识管理系统吗&#xff1f;让这篇文章成为你的参考指南。 了解知识管理系统的功能导则 首先&…

数据通信练习题

1.0osi七层模型 应用层 data 表示层 会话层 传输层 数据段 防火墙&#xff0c;端口&#xff08;TCP UDP&#xff09; 网络层 数据包 路由器 数据链路层 数据帧 交换机 物理层 比特流 网卡 2.IP地址分类 私有地址 A类 0--127 10.0.0.0…

vue学习笔记23-组件事件⭐

组件事件 在组件的模板表达式中&#xff0c;可以直接使用$emit方法触发自定义事件&#xff1b;触发自定义事件的目的是组件之间传递数据 好好好今天又碰到问题了&#xff0c;来吧来吧 测试发现其他项目都可以 正常的run ,就它不行 搜索发现新建项目并进入以后&#xff0c;用指…

数据结构->双向链表带你体验开火车(哨兵)与拼接火车(应用)厢的乐趣

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;橘橙黄又青-CSDN博客 目的&#xff1a;学习双向带头链表的增&#xff0c;删&#xff0c;查&#xff0c;销毁…

每日OJ题_牛客OR57 手套

目录 牛客OR57 手套 解析代码 牛客OR57 手套 手套_牛客题霸_牛客网 class Gloves { public:int findMinimum(int n, vector<int> left, vector<int> right) {} }; 解析代码 class Gloves { public:int findMinimum(int n, vector<int> left, vector<i…

Tomcat容器经常重启问题排查

报错代码: INFO [Catalina-utility-2] org.apache.catalina.core.StandardContext.reload Reloading Context with name [] has started1.查看内存占用情况:top 可以发现java线程正常情况下占用高达24%的内存资源 2.继续排查:top -Hp 29580 可以发现主要有子线程Catalina-ut…

Java高级编程—注解

文章目录 1.注解的概述2.常见的Annotation示例2.1 生成文档相关的注解2.2 在编译时进行格式检查的注解2.3 跟踪代码依赖性&#xff0c;实现替代配置文件功能的注解 3.自定义Annotation4.JDK中的元注解4.1 Retention4.2 Target4.3 Documented & Inherited 5. JDK8中注解的新…

服务器出现故障如何恢复数据?

服务器数据恢复案例之服务器raid6中3块硬盘离线导致阵列崩溃的数据恢复案例 服务器故障&#xff1a; 服务器中有一组由6块盘组建的 RAID6&#xff0c;这台网站服务器上运行MYSQL数据库和存放其它类型的文件。该组raid中有两块磁盘离线&#xff0c;管理员没有及时更换磁盘&#…

【Numpy】练习题100道(1-25题)

#学习笔记# 在学习神经网络的过程中发现对numpy的操作不是非常熟悉&#xff0c;遂找到了Numpy 100题。 Git-hub链接 目录 1 题目列表&#xff1a; 2 题解&#xff1a; 1 题目列表&#xff1a; 导入numpy包&#xff0c;并将其命名为np&#xff08;★☆☆&#xff09; 打印…

Spring boot创建第一个项目

作者简介&#xff1a; zoro-1&#xff0c;目前大二&#xff0c;正在学习Java&#xff0c;数据结构&#xff0c;spring等 作者主页&#xff1a; zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; Spring boot创建第一个项目 sp…

基于单片机的视觉导航小车设计

目 录 摘 要 I Abstract II 引 言 1 1 总体方案设计 3 1.1 方案论证 3 1.2 项目总体设计 3 2 项目硬件设计 4 2.1 主控模块设计 4 2.1.1单片机选型 4 2.1.2 STM32F103RCT6芯片 4 2.2单片机最小系统电路 5 2.3电机驱动模块设计 7 2.4红外模块设计 8 2.5红外遥控模块设计 9 2.6超…