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返回主页实现
学习记录,每天不停进步。
相关文章:
flutter开发实战-当前界面无操作60s返回主页实现
flutter开发实战-当前界面无操作60s返回主页实现 当前界面无操作60s返回主页实现,主要是通过Timer来控制,当监听界面是否有pointerDown时候,如果超过60s仍没有操作,则返回主页。 一、Listener Listener是用来用于调用回调以响应…...
绩效考核的基础及基本内容
人力资源是企业的第一资源,员工绩效水平决定着人力资源价值的实现程度,绩效是企业永远的重点,没有绩效,一切无从谈起。很多企业在实施考核时扩大了绩效考核的积极作用,并没有考虑企业对绩效考核负面效应的承载能力&…...
阿坤老师的彩带插花(蓝桥杯)
阿坤老师的彩带插花 问题描述 阿坤老师是个充满创意的手工艺教师,他最近在教学生们制作彩带插花。每束彩带插花由多段彩带组成,每段彩带有左端和右端,左端到右端的长度不一。阿坤老师发现,有些彩带被完全插在了其他彩带之内&…...
系列二十四、Spring设计模式之策略模式
一、前言 对于我们Java开发人员来说,Spring框架的重要性不言而喻,可以说Java领域之所以发展这么壮大,生态这么丰富,功能这么强大,是离不开Spring以及由其衍生出来的各种子模块的,正是由它们共同奠定了JavaE…...
Linux常用命令——basename命令
在线Linux命令查询工具 basename 打印目录或者文件的基本名称 补充说明 basename命令用于打印目录或者文件的基本名称。basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称。 语法 basename(选项)(参数)选项 --help&…...
LeetCode17.电话号码的字母组合
写这题的时候没有啥DFS思路,感觉还是DFS没刷明白,还需要多提高 参考链接: 【还得用回溯算法!| LeetCode:17.电话号码的字母组合-哔哩哔哩】 https://b23.tv/oTuy71C class Solution {public List<String> lette…...
为Oracle链接服务器使用分布式事务
1 现象 在SQL Server中创建指向Oracle的链接服务器,SQL语句在事务中向链接服务器插入数据。返回链接服务器无法启动分布式事务的报错。 2 解决 在Windows平台下,SQL Server依赖分布式事务协调器(MSDTC)来使用分布式事务࿰…...
代洋集团,引领绿色能源新潮流
代洋集团,引领绿色能源新潮流,成功安装了先进的太阳能电池阵列。这一环保举措,不仅彰显了我们对可持续发展的执着追求,更为整个园区带来了绿色能源的革新。 这个高效的太阳能电池阵列,利用纯净的阳光转化为清洁电力&a…...
LuatOS-SOC接口文档(air780E)--rtos - RTOS底层操作库
rtos.receive(timeout) 接受并处理底层消息队列. 参数 传入值类型 解释 int 超时时长,通常是-1,永久等待 返回值 返回值类型 解释 msgid 如果是定时器消息,会返回定时器消息id及附加信息, 其他消息由底层决定,不向lua层进行任何保证. 例子 无 rtos.timer_start(id…...
一名技术Leader应该是创作者
今天看了一本书叫做《黑客与画家》。它里面提到一个很重要的概念就是黑客(优秀的程序员)是一名建筑师,而不是一名工程师。 传统的主管和互联网的Leader 这两者有什么区别呢?关键点在于建筑师是思考做什么,而工程师是…...
Java多线程总结
一、概念: 1、什么是多任务 多任务就是在同一时间做多件事情,如边吃饭边玩手机等。看起来是多个任务都在做,本质上我们的大脑在同一时间依旧只做了一件件事情 2、什么是程序 程序是指令和数据的有序集合,其本身没有…...
docker devicemapper: Error running DeleteDevice dm_task_run failed
docker 删除容器,遇到: devicemapper: Error running DeleteDevice dm_task_run failed 异常 [hadoophadoop02 ~]$ sudo docker rm 5ede1280f0bf Error response from daemon: container 5ede1280f0bf791e91d40038b15decd42e8923546ae578abd96e08114c76…...
第二十章总结
一.线程简介 二.创建线程 1.继承Thread类 Thread类中常用的两个构造方法如下: public Thread():创建一个新的线程对象。 public Thread(String threadName):创建一个名称为threadName的线程对象。 继承Thread类创建一个新的线程的语法如下: public …...
Linux环境安装Java,Tomcat,Mysql,
1、Java的安装 载 jdk1.8 注:此处 CentOS7 是64位,所以下载的是:Linux x64, 文件类型为 tar.gz 的文件 JDK 官网地址:https://www.oracle.com/java/ cd /usr/local/ mkdir jdk cd jdk/tar -xvf jdk-8u202-linux-x64.…...
前后端分离开发出现的跨域问题
先说说什么是跨域。 请求的URL地址中的协议、域名、端口号中的任意一个与当前URL不同就是跨域。 比如: 当前页面的URL请求的URL是否跨域原因htttp://localhost:8080htttps://localhost:8080是协议不同htttp://localhostll:8080htttp://localhost:8080是域名不同htt…...
水淼采集器-免费水淼采集器下载
在当今数字时代,随着信息的迅猛增长,许多网站管理员面临一个共同而具有挑战性的问题——如何在短时间内获取大量优质内容,以满足用户对信息的不断需求?水淼采集器,作为一个备受瞩目的解决方案,正成为许多人…...
[DASCTF 2023 0X401七月暑期挑战赛] web刷题记录
文章目录 EzFlask方法一 python原型链污染方法二 flask框架静态文件方法三 pin码计算 MyPicDisk方法一 字符串拼接执行命令方法二 phar反序列化 ez_cms EzFlask 考点:python原型链污染、flask框架理解、pin码计算 源码如下 import uuidfrom flask import Flask, re…...
Python超级详细的变量命名规则
Python 需要使用标识符给变量命名,其实标识符就是用于给程序中变量、类、方法命名的符号(简单来说,标识符就是合法的名字)。 Python 语言的标识符必须以字母、下画线(_)开头,后面可以跟任意数目…...
Zabbix 6 详细安装部署教程
目录 一、安装 MySQL 数据库 二、安装 zabbix 监控平台 三、编辑配置文件 四、启动服务 五、zabbix-web 安装 zabbix web 出图展示乱码问题解决方案 zabbix 的安装部署非常简单,官方提供了四种安装途径,分别是二进制 rpm 包安装方式、源码安装方…...
如何设置带有密码的excel只读模式?
Excel只读模式大家都不陌生,那大家知道带有密码的只读模式吗?今天给大家分享如何设置带有密码的只读模式。 打开excel文件,将文件进行【另存为】设置,然后停留在保存路径的界面中,我们点击下面的工具 – 常规选项 在常…...
1分钟快速上手:将你的编程智能体接入Memoria
只需一条命令,即可拥有持久化记忆。兼容Cursor、Claude Code、Codex和Kiro。 为什么你需要它 编程智能体功能强大——但它们会遗忘一切。 长任务被迫中断:一项复杂的重构工作可能跨多个会话进行。智能体崩溃、上下文窗口占满,或者你只是合上…...
模型微调初探:基于Qwen1.5-1.8B GPTQ进行领域适配的可行性分析
模型微调初探:基于Qwen1.5-1.8B GPTQ进行领域适配的可行性分析 最近和几个做企业服务的朋友聊天,他们都在琢磨同一个问题:现在市面上通用的大模型能力确实强,但一遇到自己行业里的专业问题,比如看一份复杂的法律合同&…...
Ollama部署LFM2.5-1.2B-Thinking:轻量级但强思考的开发者首选模型
Ollama部署LFM2.5-1.2B-Thinking:轻量级但强思考的开发者首选模型 1. 为什么选择LFM2.5-1.2B-Thinking模型 如果你正在寻找一个既轻量又聪明的AI助手来帮你写代码、解决问题或者进行创意写作,LFM2.5-1.2B-Thinking模型绝对值得你关注。这个模型虽然只有…...
Qwen3.5-9B惊艳效果:上传Excel截图→识别表格→生成SQL查询语句演示
Qwen3.5-9B惊艳效果:上传Excel截图→识别表格→生成SQL查询语句演示 1. 开篇:认识Qwen3.5-9B的强大能力 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,它在多个领域展现出惊人的能力。这个模型最吸引人的特点是它不仅能处理文字ÿ…...
真机部署仅需几小时!PhyAgentOS开源项目,实现零代码跨本体迁移
开箱即用、零代码跨本体、多机协同、决策可追溯的全链路开发底座 ——具身智能自进化操作系统 目录 01 PhyAgentOS 是什么 核心创新:认知—物理解耦 hal_watchdog:那个关键的‘看门狗’ 四层架构:模块化、可插拔 自进化能力ÿ…...
OpenClaw排错指南:Kimi-VL-A3B-Thinking接口调用常见问题解决
OpenClaw排错指南:Kimi-VL-A3B-Thinking接口调用常见问题解决 1. 为什么需要这份排错指南? 上周我在本地部署OpenClaw对接Kimi-VL-A3B-Thinking多模态模型时,遇到了连续三个通宵都没解决的接口调用问题。从模型响应超时到多模态数据处理异常…...
Phi-3-mini-4k-instruct-gguf完整指南:GGUF模型加载机制与llama-cpp内存优化原理
Phi-3-mini-4k-instruct-gguf完整指南:GGUF模型加载机制与llama-cpp内存优化原理 1. 认识Phi-3-mini-4k-instruct-gguf模型 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本。这个模型特别适合处理问答、文本改写、摘要整理和简短创作…...
浦语灵笔2.5-7B消防场景:火灾现场图→火源定位→疏散路径中文生成
浦语灵笔2.5-7B消防场景:火灾现场图→火源定位→疏散路径中文生成 1. 消防场景应用价值 在紧急火灾救援场景中,时间就是生命。传统的人工分析火灾现场图像需要经验丰富的消防指挥员,这个过程往往需要几分钟甚至更长时间。而浦语灵笔2.5-7B多…...
2025_NIPS_CRRL: Learning Channel-invariant Neural Representations for High-performance Cross-day ...
文章核心总结 本文提出CRRL(Channel Rearrangement and Reconstruction Learning)框架,用于解决脑机接口(BCI)跨天解码中神经信号的通道级变异性问题,实现长期稳定解码。核心创新在于通过两个专用模块分别处理神经元丢失/新增、电极漂移两类变异,在多数据集上达成超两个…...
LeetCode 删除无效的括号:python 题解匆
这个代码的核心功能是:基于输入词的长度动态选择反义词示例,并调用大模型生成反义词,体现了 “动态少样本提示(Dynamic Few-Shot Prompting)” 与 “上下文长度感知的示例选择” 的能力。 from langchain.prompts impo…...
