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

Flutter如何知道页面/组件可见?

在以前项目中,onPageShow和onPageHide由开源框架flutter_boost提供,在此次项目中,创新性的采用了fusion框架,fusion框架同样提供了类似的方法,但在实践中发现,当flutter页面相互replace或者多次pop页面后,onPageShow不会调用,这就导致了诸多bug,于是,需要探索如何了解一个widget/page是否可见。

首先试验了flutter官方提供的WidgetBindingsObserver,发现其AppLifecycleState有四种状态:

  • resumed 接受用户响应并在前台
  • inactive 不能接受用户响应,失去焦点
  • paused 不可见,运行在后台
  • detached 应用程序仍然由 Flutter 引擎托管,但已从任何宿主视图中分离

经过测试发现,在用户回到桌面或者锁屏,可以监听到paused事件,但是push到新的flutter页面,或者从其他flutter页面pop到本页面,没有生命周期变化,因此,此方案不可行。

观察发现,flutter的动画,在应用退到后台/push到其他页面等情况,动画时间仍在流逝,但动画绘制会停止(节约性能),这就代表着,flutter引擎是能知道某个widget是否可见的,在flutter中使用动画,通常需要使用with关键字混入SingleTickerProviderStateMixin,那么看来答案,就在此类中了。
查看源码:

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

相关文章:

  • 【MySQL】如何使用Named Pipe协议(Windows)连接MySQL数据库
  • 【c++】c++的一些技术操作
  • JS中对象数组深拷贝方法
  • 2022数学建模国赛C题官网展示论文C155论文复现
  • 阿里云 K8s PVC 绑定 StorageClass 申领 PV 失败
  • php数组
  • 构造不包含字母和数字的webshell
  • 中国大学生服务外包创新创业大赛丨借 AI 之力,助“记账”难题
  • MacOS 安装Redis并设置密码
  • 函数的参数作为引用
  • 【文化课学习笔记】【化学】非金属及其化合物
  • Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)
  • 步步向前,曙光已现:百度的大模型之路
  • 常见的 Python 错误及其解决方案
  • 文章评论以及回复评论邮件通知(Go 搭建 qiucode.cn 之八)
  • java面试基础 -- ArrayList 和 LinkedList有什么区别, ArrayList和Vector呢?
  • matlab 点云最小二乘拟合空间直线(方法一)
  • 详解junit
  • Nginx的安装及负载均衡搭建
  • JVM学习笔记(一)
  • fastjson 序列化问题:Comparison method violates its general contract
  • Angular安全专辑之二——‘unsafe-eval’不是以下内容安全策略中允许的脚本源
  • 十一、Linux用户及用户组的权限信息如何查看?如何修改?什么是权限的数字序号?
  • ahooks.js:一款强大的React Hooks库及其API使用教程(二)
  • ARM 配置晶振频率
  • 最强自动化测试框架Playwright(37)-网络
  • Ant Design Pro 前端脚手架 配置混合导航
  • tcl学习之路(五)(Vivado时序约束)
  • Hlang-中英双语言编程语言使用手册
  • centos 7 安装docker