Flutter实现倒计时功能,秒数转时分秒,然后倒计时

Flutter实现倒计时功能
发布时间:2023/05/12
本文实例为大家分享了Flutter实现倒计时功能的具体代码,供大家参考,具体内容如下

有一个需求,需要在页面进行显示倒计时,倒计时结束后,做相应的逻辑处理。

实现思路:在Flutter中,Timer.periodic提供了循环功能,查看函数定义:

factory Timer.periodic(Duration duration, void callback(Timer timer))

第一个参数就是时间间隔,第二个参数就是事件处理回调。

由于后台返回的是秒数,所以需要根据总秒数计算小时,分钟,秒。同时,当不满一个小时时,只显示分钟和秒数,当分钟和秒数只有一个数时(比如1分8秒,显示为01:08)前面加“0”处理。

完整代码:

import 'package:flutter/material.dart';
import 'dart:async';class CounterDownPage extends StatefulWidget {@override_CounterDownPageState createState() => _CounterDownPageState();
}class _CounterDownPageState extends State<CounterDownPage> {// 用来在布局中显示相应的剩余时间String remainTimeStr = '';Timer _timer;//倒计时 void startCountDown(int time) {// 重新计时的时候要把之前的清除掉if (_timer != null) {if (_timer.isActive) {_timer.cancel();_timer = null;}}if (time <= 0) {return;}var countTime = time;const repeatPeriod = const Duration(seconds: 1);_timer = Timer.periodic(repeatPeriod, (timer) { if (countTime <= 0) {timer.cancel();timer = null;//待付款倒计时结束,可以在这里做相应的操作return;}countTime--;//外面传进来的单位是秒,所以需要根据总秒数,计算小时,分钟,秒int hour = (countTime ~/ 3600) % 24;//如果不止24小时的就不用%24int minute = countTime % 3600 ~/60;int second = countTime % 60;var str = '';if (hour > 0) {str = str + hour.toString()+':';}if (minute / 10 < 1) {//当只有个位数时,给前面加“0”,实现效果:“:01”,":02"str = str + '0' + minute.toString() + ":";} else {str = str + minute.toString() + ":";}if (second / 10 < 1) {str = str + '0' + second.toString();} else {str = str + second.toString();}setState(() {remainTimeStr = str;});});}@overridevoid initState() {super.initState();//开始倒计时,这里传入的是秒数startCountDown(5000);}@overridevoid dispose() {super.dispose();if (_timer != null) {if (_timer.isActive) {_timer.cancel();_timer = null;}}}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("倒计时"),),body: Center(child: Row(mainAxisAlignment: MainAxisAlignment.center,children: [Text("剩余", style: TextStyle(fontSize: 18,color: Color.fromRGBO(255, 111, 50, 1),fontWeight: FontWeight.bold),),Text(remainTimeStr.length > 0 ? remainTimeStr: "--", style: TextStyle(fontSize: 18,color: Color.fromRGBO(255, 111, 50, 1),fontWeight: FontWeight.bold),),],),),);}
}

在这里插入图片描述
服务器返回的时间戳87392,现在的时间戳+87392 现在的时间戳,两者的时间戳相差二十多个小时,也就是说87392就是秒数,直接传秒数到上面的startCountDown方法即可。

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

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

相关文章

Antd的日期选择器中文化配置

当你使用antd的日期选择器后&#xff0c;你会发现日期什么都是英文的&#xff1a;即便你已经在项目中配置了中文化&#xff1a; 我确实已经配置了中文化&#xff1a; 但是为啥没生效&#xff1f;官网回答&#xff1a;FAQ - Ant Design dayjs中文网&#xff1a; 安装 | Day…

零拷贝详解

1、在没有DMA技术之前的I/O过程是这样的&#xff1a; CPU发出对应的指令给磁盘控制器&#xff0c;然后返回磁盘控制器收到指令后&#xff0c;于是就开始准备数据&#xff0c;会把数据放入到磁盘控制器的内部缓冲区&#xff0c;然后产生中断CPU收到中断信号后&#xff0c;停下手…

人工智能时代的科学探索 | 《自然》评述

人工智能(AI)正越来越多地融入科学发现&#xff0c;以增强和加速研究&#xff0c;帮助科学家提出假设、设计实验、收集和解释大型数据集&#xff0c;并获得仅靠传统科学方法可能无法实现的洞察力。 过去十年间&#xff0c;AI取得了巨大的突破。其中就包括自监督学习和几何深度学…

手机的发展历史

目录 一.人类的通信方式变化 二.手机对人类通信的影响 三.手机的发展过程 四.手机对现代人的影响 一.人类的通信方式变化 人类通信方式的变化是一个非常广泛和复杂的话题&#xff0c;随着技术的进步和社会的发展&#xff0c;人类通信方式发生了许多重大的变化。下面是一些主…

应用程序运行报错:First section must be [net] or [network]:No such file or directory

应用程序报错环境&#xff1a; 在linux下&#xff0c;调用darknet训练的模型&#xff0c;报错&#xff1a;First section must be [net] or [network]:No such file or directory&#xff0c;并提示&#xff1a;"./src/utils.c:256: error: Assertion 0 failed." 如…

百日筑基篇——Pandas学习三(pyhton入门八)

百日筑基篇——Pandas学习三&#xff08;pyhton入门八&#xff09; 文章目录 前言一、数据排序二、字符串处理三、数据合并方法1. merge方法2. concat方法 四、分组数据统计五、数据重塑1. stack2. pivot 总结 前言 上一篇文章介绍了一下pandas库中的一些函数&#xff0c;而本…

MySQL数据类型

文章目录 MySQL数据类型1. 数据类型分类2. 数值类型2.1 tinyint类型2.2 bit类型2.3 小数类型2.3.1 float2.3.2 decimal 2.4 字符串类型2.4.1 char2.4.2 varchar2.4.3 char和varchar比较 2.5 日期和时间类型2.6 enum和set MySQL数据类型 1. 数据类型分类 红色标注是我主要讲解…

【QT】 QFileQFileInfo文件操作

很高兴在雪易的CSDN遇见你 &#xff0c;给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享QT对文件的操作技术&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0c;一起进步&#xff01; 你的点…

商城-学习整理-高级-全文检索-ES(九)

目录 一、ES简介1、网址2、基本概念1、Index&#xff08;索引&#xff09;2、Type&#xff08;类型&#xff09;3、Document&#xff08;文档&#xff09;4、倒排索引机制4.1 正向索引和倒排索引4.2 正向索引4.3 倒排索引 3、相关软件及下载地址3.1 Kibana简介3.2 logstash简介…

【C++深入浅出】初识C++上篇(关键字,命名空间,输入输出,缺省参数,函数重载)

目录 一. 前言 二. 什么是C 三. C关键字初探 四. 命名空间 4.1 为什么要引入命名空间 4.2 命名空间的定义 4.3 命名空间使用 五. C的输入输出 六. 缺省参数 6.1 缺省参数的概念 6.2 缺省参数的分类 七. 函数重载 7.1 函数重载的概念 7.2 函数重载的条件 7.3 C支…

软件测试项目实战,电商业务功能测试点汇总(全覆盖)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 支付功能怎么测试…

C语言刷题训练【第11天】

大家好&#xff0c;我是纪宁。 今天是C语言笔试刷题训练的第11天&#xff0c;加油&#xff01; 文章目录 1、声明以下变量&#xff0c;则表达式: ch/i (f*d – i) 的结果类型为&#xff08; &#xff09;2、关于代码的说法正确的是&#xff08; &#xff09;3、已知有如下各变…

使用 Visual Studio GoogleTest编写 C/C++ 单元测试——入门篇

入门教程 Visual Studio 新建 GoogleTest项目&#xff0c;一路选默认参数 pch.h #pragma once#include "gtest/gtest.h"int add(int a, int b);pch.cpp #include "pch.h"int add(int a, int b) {return a b; }test.cpp #include "pch.h"TES…

【广州华锐视点】AR电力职业技能培训系统让技能学习更“智慧”

随着科技的发展&#xff0c;教育方式也在不断地进步和创新。其中&#xff0c;增强现实(AR)技术的出现&#xff0c;为教育领域带来了全新的可能。AR电力职业技能培训系统就是这种创新教学方法的完美实践&#xff0c;它将虚拟与现实相结合&#xff0c;为学生提供了一个沉浸式的学…

【数据库】Sql Server可视化工具SSMS条件和SQL窗格以及版本信息

2023年&#xff0c;第34周&#xff0c;第1篇文章。给自己一个目标&#xff0c;然后坚持总会有收货&#xff0c;不信你试试&#xff01; SQL SERVER 官方本身就有数据库可视化管理工具SSMS&#xff0c;所以大部分都会使用SSMS。以前版本是直接捆绑&#xff0c; 安装完成就自带有…

Python多线程与线程池(python线程池ThreadPoolExecutor)concurrent.futures高级别异步执行封装

文章目录 Python多线程与线程池一、Python多线程1.1 线程简介1.2 Python中的多线程1.3 GIL限制 二、线程池2.1 Python中的线程池 三、代码分析四、参考资料 Python多线程与线程池 一、Python多线程 在进行复杂的计算或处理大量数据时&#xff0c;可以通过创建多个线程来同时执…

Sentinel规则持久化

首先 Sentinel 控制台通过 API 将规则推送至客户端并更新到内存中&#xff0c;接着注册的写数据源会将新的规则保存到本地的文件中。 示例代码&#xff1a; 1.编写处理类 //规则持久化 public class FilePersistence implements InitFunc {Value("spring.application:n…

云原生k8s---资源限制、探针

目录 一&#xff1a;资源限制 1、资源限制原因 2、Pod 和 容器 的资源请求和限制 3、CPU 资源单位 4、内存 资源单位 5、事例 &#xff08;1&#xff09;事例一 &#xff08;2&#xff09;事例二 二&#xff1a;重启策略 1、重启策略模式 2、事例 三&#xff1a;探针…

Win10提醒事项如何打开?电脑上如何添加日程提醒?

有不少上班族表示自己在日常办公时&#xff0c;经常会忘记一些重要的事情&#xff0c;例如领导安排给自己的任务、会议安排、项目截止日期等。为了避免自己忘记工作事项&#xff0c;很多人都想要在电脑上设置提醒事项或添加日程提醒。那么Win10提醒事项如何打开呢&#xff1f;P…

[Leetcode] [Tutorial] 多维动态规划(未完待续)

文章目录 62. 不同路径Solution 62. 不同路径 一个机器人位于一个 m ∗ * ∗ n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。 问总共有多少条不同的路径&#xff1f; 示例…