flutter开发实战-当前界面无操作60s返回主页实现

flutter开发实战-当前界面无操作60s返回主页实现

当前界面无操作60s返回主页实现,主要是通过Timer来控制,当监听界面是否有pointerDown时候,如果超过60s仍没有操作,则返回主页。

一、Listener

Listener是用来用于调用回调以响应常见的指针事件
Listener的属性如下

const Listener({super.key,this.onPointerDown,this.onPointerMove,this.onPointerUp,this.onPointerHover,this.onPointerCancel,this.onPointerPanZoomStart,this.onPointerPanZoomUpdate,this.onPointerPanZoomEnd,this.onPointerSignal,this.behavior = HitTestBehavior.deferToChild,super.child,}) : assert(behavior != null);

可以看出,我们可以通过onPointerDown来判断用户是否触摸到屏幕。

二、新增ListenerTouchTimerWrapper

为Widget添加Timer控制,当触摸了屏幕,取消Timer,重新倒计时。倒计时结束之后,可以执行callback。

void updateTouch() {_timer?.cancel();if (timeoutCallback != null) {_timer = Timer(Duration(milliseconds: milliseconds), timeoutCallback!);}}

完整代码如下

class ListenerTouchTimer {final int milliseconds;Timer? _timer;VoidCallback? timeoutCallback;ListenerTouchTimer({required this.milliseconds,});void startListener({required VoidCallback timeoutCallback}) {this.timeoutCallback = timeoutCallback;updateTouch();}void updateTouch() {_timer?.cancel();if (timeoutCallback != null) {_timer = Timer(Duration(milliseconds: milliseconds), timeoutCallback!);}}void dispose() {_timer?.cancel();}
}

为widget创建Wrapper

/// 无操作回主页
class ListenerTouchTimerWrapper extends StatelessWidget {const ListenerTouchTimerWrapper({super.key,required this.child,this.listenerTouchTimer,});final Widget child;final ListenerTouchTimer? listenerTouchTimer;@overrideWidget build(BuildContext context) {return Listener(onPointerDown: (event) {if (listenerTouchTimer != null) {listenerTouchTimer!.updateTouch();}},child: child,);}
}

三、使用ListenerTouchTimerWrapper

在界面的外层使用ListenerTouchTimerWrapper进行包裹一下。

class DemoPage extends StatefulWidget {const DemoPage({Key? key,required this.arguments,}) : super(key: key);final Map<String, dynamic> arguments;@overrideState<DemoPage> createState() => _DemoPageState();
}class _DemoPageState extends State<DemoPage> {/// 超出60秒自动返回首页ListenerTouchTimer? listenerTouchTimer;@overridevoid initState() {// TODO: implement initStategetAppConfigFromNative();listenerTouchTimer = ListenerTouchTimer(milliseconds: 6000);super.initState();loggerInfo("ChangeClothe initState");if (listenerTouchTimer != null) {listenerTouchTimer!.startListener(timeoutCallback: () {print("_ChangeClotheWaitPageState 超出60秒自动返回首页");if (mounted ) {navigatorBack();}});}}@overridevoid dispose() {// TODO: implement disposeloggerInfo("ChangeClothe dispose");listenerTouchTimer?.dispose();super.dispose();}@overrideWidget build(BuildContext context) {return ListenerTouchTimerWrapper(listenerTouchTimer: listenerTouchTimer,child: Scaffold(body: Container(),),);}void navigatorBack() {NavigatorPageRouter.pop();}
}

四、小结

flutter开发实战-当前界面无操作60s返回主页实现

学习记录,每天不停进步。

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

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

相关文章

【LeetCode周赛】LeetCode第373场周赛

LeetCode第373场周赛 目录 循环移位后的矩阵相似检查统计美丽子字符串 I交换得到字典序最小的数组统计美丽子字符串 II 循环移位后的矩阵相似检查 循环移位后的矩阵相似检查 分析&#xff1a; 简单模拟 这道题目就是一个简单的模拟题&#xff0c;直接按照题目意思进行判断即可…

JIRA部分数据库结构

表jiraissue&#xff08;问题表&#xff09; 字段 数据类型 是否为空 KEY 说明 ID decimal(18,0) NO PRI 主键 pkey varchar(255) YES MUL 查看主键&#xff0c;“项目ID” PROJECT decimal(18,0) YES MUL 项目外键&#xff0c;项目表外键 REPORTER varch…

【力扣】189. 轮转数组

【力扣】189. 轮转数组 文章目录 【力扣】189. 轮转数组1. 题目介绍2. 解法2.1 方法一&#xff1a;不太正规&#xff0c;但是简单2.2 方法二&#xff1a;使用额外的数组2.3 方法三&#xff1a;环状替换2.4 方法四&#xff1a;数组翻转 3. Danger参考 1. 题目介绍 给定一个整数…

社区新零售:重塑零售业的全新模式

社区新零售&#xff1a;重塑零售业的全新模式 近年来&#xff0c;新零售业成为了研究的焦点&#xff0c;它是一种以互联网为基础的零售形式。新零售通过运用先进技术手段&#xff0c;如大数据和人工智能&#xff0c;对商品的生产、流通和销售过程进行升级改造&#xff0c;重新构…

Android Camera Surface显示相关问题总结

1.默认创建的Preview Surface填充RGBA数据显示异常。 //界面创建的Surface format默认为4(RGB_565),而预览界面所需的格式是RGBA_8888 ANativeWindow_setBuffersGeometry(window, width, height, WINDOW_FORMAT_RGBA_8888); 2.调用ANativeWindow的dequeueBuffer出错&#xff…

系统入侵与提权

系统入侵与提权 一、信息搜集 1. 主机扫描 (1)扫描某个网段内存在的主机 (2)扫描主机开放的端口和服务 (3)扫描主机的操作系统和版本号 (4)扫描主机可能存在的已知漏洞 2. Web扫描 (1)查询域名和子域名信息 (2)查询whoid信息 (3)扫描Web应用的URL路径 (4)扫描Web应用后台管…

【实验记录】论文阅读(杂七杂八)

1.基于视觉语义路标的智能手机室内定位与建图研究_高煜昕 p19 介绍了智能终端的数据集ADVIO数据集&#xff0c;使用iPhone采集&#xff0c;针对视觉和惯导联合开发&#xff0c;具有描述真是复杂场景以及高质量真值的优点。 p20 论证了vins-mono、vins-fusion和orb-slam3等主流…

Go GORM简介

GORM&#xff08;Go Object-Relational Mapping&#xff09;是一个用于Go语言的ORM库&#xff0c;它提供了一种简单、优雅的方式来操作数据库。GORM支持多种数据库&#xff0c;包括MySQL、PostgreSQL、SQLite和SQL Server。以下是GORM的一些主要特性 全功能ORM&#xff1a;GORM…

提升企业网络安全的得力助手——EventLog Analyzer网络日志管理

在当今数字化时代&#xff0c;企业的网络安全问题变得尤为重要。为了更好地应对日益增多的威胁和安全漏洞&#xff0c;企业需要一种高效的网络日志管理工具&#xff0c;EventLog Analyzer便是其中一款卓越的解决方案。 EventLog Analyzer EventLog Analyzer是一款综合性的网络…

C#通过NPOI 读、写Excel数据;合并单元格、简单样式修改;通过读取已有的Excel模板另存为文件

文章目录 1 需要引用的DLL2 调用示例3 工具类 1 需要引用的DLL 2 调用示例 public static void WriteExcel() {string templateFile "F:\12312\excel.xlsx"; // 文件必须存在string outFile "F:\12312\" DateTime.Now.ToString("yyyyMMddHHmmssff…

逆向 tg 发送图片

开发工具 工具名称工具类型说明AndroidStuduo编辑工具开发工具jadxjava工具将apk解成java项目xposed插件工具插件tg版本9.7.5 分析源码的点&#xff1a; 发送图片的点 获取sendMessageParams 获取TLRPC$TL_photo 回调 实现 public void sendImg(String path, String…

NI自动化测试系统用电必备攻略,电源规划大揭秘

就像使用电脑之前需接通电源一样&#xff0c;自动化测试系统的电源选择也是首当其冲的问题&#xff0c;只不是这个问题更复杂。 比如&#xff0c;应考虑地理位置因素&#xff0c;因为不同国家或地区的公共电网所提供的线路功率有所不同。在电源布局和设备选型方面&#xff0c;有…

商城系统通过Kafka消息队列,实现订单的处理和状态更新

以下是一个简单的Spring Boot应用程序示例&#xff0c;演示如何使用Kafka实现订单的处理和状态更新。 首先&#xff0c;我们创建一个名为“order”的topic&#xff0c;在application.yaml配置文件中添加Kafka的配置&#xff1a; spring:kafka:bootstrap-servers: localhost:9…

每日一题(LeetCode)----哈希表--两个数组的交集

每日一题(LeetCode)----哈希表–两个数组的交集 1.题目&#xff08;[349. 两个数组的交集](https://leetcode.cn/problems/valid-anagram/)&#xff09; 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出…

《深入理解计算机系统》学习笔记 - 第三课 - 位,字节和整型

Lecture 03 Bits,Bytes, and Integer count 位&#xff0c;字节&#xff0c;整型 文章目录 Lecture 03 Bits,Bytes, and Integer count 位&#xff0c;字节&#xff0c;整型运算&#xff1a;加&#xff0c;减&#xff0c;乘&#xff0c;除加法乘法取值范围乘法结果 使用无符号注…

Python Web包就业服务

还在等什么&#xff0c;加入我们&#xff0c;包就业

几何教学工具 Sketchpad几何画板 mac软件特色

Sketchpad几何画板 for Mac是一款适用于macOS系统的几何教学工具&#xff0c;用户可以在其画板上进行各种几何图形的绘制、演示&#xff0c;帮助教师了解学生的思路和对概念的掌握程度。此外&#xff0c;Sketchpad更深层次的功能则是可以用来进行几何交流、研究和讨论&#xff…

js手写面试题【附带注释】

文章目录 前言数组方法手写pushpopshiftunshiftcancatslicespliceforEachmapreducefind 手写订阅发布手写单例模式后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;javaScript &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和…

代码安全-exe的代码签名和代码混淆加密

信息安全相关 - 建设篇 第四章 代码安全-exe的代码签名和代码混淆加密 信息安全相关 - 建设篇系列文章回顾代码安全-exe的代码签名和代码混淆加密前言实施步骤C#程序的程序集引用使用强命名(可选)Windows Server AD CA 制作自定义的证书模板,用于代码签名生成拥有自签名CA的代…