当前位置: 首页 > news >正文

flutter开发实战-WidgetsBinding监听页面前台后台退出状态

flutter开发实战-WidgetsBinding监听页面前台后台退出状态

在开发过程中,经常监听页面前台后台退出状态,这里用到了WidgetsBinding

一、WidgetsBinding是什么?

WidgetsBinding是Flutter中最重要的Binding之一,它提供了与Widget树的交互。在Flutter中,所有的UI都是Widget,从最简单的文本到最复杂的布局,都可以通过Widget树来描述。WidgetsBinding负责处理用户输入事件、布局和绘制。它还处理与系统交互的平台通道,如调用原生代码和处理通知。WidgetsBinding提供了一些常用的方法,如addPostFrameCallback、deferredUnmount、getRendererBinding等。

二、监听页面前台后台退出状态

WidgetsBinding监听页面前台后台退出状态,我们需要在Widget中添加

with WidgetsBindingObserver

在initState中加入观察者

 WidgetsBinding.instance?.addObserver(this);

在dispose中移除观察者

 WidgetsBinding.instance?.removeObserver(this);

之后通过响应的方法didChangeAppLifecycleState来监听页面前台后台退出状态

// WidgetBinding///生命周期变化时回调//  resumed:应用可见并可响应用户操作//  inactive:用户可见,但不可响应用户操作//  paused:已经暂停了,用户不可见、不可操作//  suspending:应用被挂起,此状态IOS永远不会回调void didChangeAppLifecycleState(AppLifecycleState state) {super.didChangeAppLifecycleState(state);switch (state) {case AppLifecycleState.inactive:{// 处于这种状态的应用程序应该假设它们可能在任何时候暂停。break;}case AppLifecycleState.resumed:{// 应用程序可见,前台if (_isAppBackground == true) {setState(() {});_isAppBackground = false;}break;}case AppLifecycleState.paused:{// 应用程序不可见,后台_isAppBackground = true;break;}case AppLifecycleState.detached:{// 页面退出break;}}}///当前系统改变了一些访问性活动的回调void didChangeAccessibilityFeatures() {super.didChangeAccessibilityFeatures();}/// Called when the system is running low on memory.///低内存回调void didHaveMemoryPressure() {super.didHaveMemoryPressure();}/// Called when the application's dimensions change. For example,/// when a phone is rotated.///应用尺寸改变时回调,例如旋转void didChangeMetrics() {super.didChangeMetrics();}/// {@macro on_platform_brightness_change}void didChangePlatformBrightness() {super.didChangePlatformBrightness();}///文字系数变化void didChangeTextScaleFactor() {super.didChangeTextScaleFactor();}

三、小结

flutter开发实战-WidgetsBinding监听页面前台后台退出状态。

https://blog.csdn.net/gloryFlow/article/details/132253284
学习记录,每天不停进步。

http://www.lryc.cn/news/121163.html

相关文章:

  • 父进程等待子进程退出 / 僵尸进程孤儿进程
  • 【LeetCode 75】第二十六题(394)字符串解码
  • UNIX网络编程——TCP协议API 基础demo服务器代码
  • [保研/考研机试] KY163 素数判定 哈尔滨工业大学复试上机题 C++实现
  • iOS_crash文件的获取及符号化(解析)
  • STM32定时器TIM控制
  • 网络请求中,token和cookie有什么区别
  • Javaweb_xml
  • http相关知识点
  • 【SA8295P 源码分析】68 - Android 侧用户层 输入子系统获取 /dev/input/event0 节点数据 代码流程分析
  • 走出迷宫(多组输入bfs)
  • Linux系统编程-终端、进程组、会话
  • Linux部分文件操作记录
  • Android系统-进程-Binder2-Java层
  • 体渲染原理及WebGL实现【Volume Rendering】
  • VUE3组件
  • 【iOS】autoreleasepool
  • 0基础学习VR全景平台篇 第80篇:Insta360 影石如何直播推流
  • 大语言模型之三 InstructGPT训练过程
  • ChatGPT在自动化报告和数据分析中的应用如何?
  • 面试热题(三数之和)
  • 在idea运行python文件
  • SQL - limit
  • 11. Redis基础知识
  • list模拟实现【引入反向迭代器】
  • 【华为OD机试】字符串变换最小字符串【2023 B卷|100分】
  • ARTS 挑战打卡的第8天 ---volatile 关键字在MCU中的作用,四个实例讲解(Tips)
  • 第二课-一键安装SD-Stable Diffusion 教程
  • Vue3 动态列 <el-table-column> 实现 formatter 的两种方法
  • 室温超导是什么?有哪些应用场景?