如何在创建新计时器之前检查计时器是否处于活动状态

2023-12-09

我在另一个线程上遇到了这个计时器代码。当您按下RaisedButton同时进行多次,每次点击都会增加 -1 秒,从而增加减少的速度。

有关检查计时器是否已处于活动状态以及是否不让计时器处于活动状态的最简单方法的任何想法RaisedButton创建一个新的。谢谢!

import 'dart:async';

[...]

Timer _timer;
int _start = 10;

void startTimer() {
  const oneSec = const Duration(seconds: 1);
  _timer = new Timer.periodic(
    oneSec,
    (Timer timer) => setState(
      () {
        if (_start < 1) {
          timer.cancel();
        } else {
          _start = _start - 1;
        }
      },
    ),
  );
}

@override
void dispose() {
  _timer.cancel();
  super.dispose();
}

Widget build(BuildContext context) {
  return new Scaffold(
    appBar: AppBar(title: Text("Timer test")),
    body: Column(
      children: <Widget>[
        RaisedButton(
          onPressed: () {
            startTimer();
          },
          child: Text("start"),
        ),
        Text("$_start")
      ],
    ),
  );
}

添加检查以查看是否_timer已经使用isActive的财产Timers。如果它已经处于活动状态,则不会创建新的。

Example:

void startTimer() {
  const oneSec = const Duration(seconds: 1);
  if(!_timer?.isActive) {
    _timer = new Timer.periodic(
      oneSec,
      (Timer timer) => setState(
        () {
          if (_start < 1) {
            timer.cancel();
          } else {
            _start = _start - 1;
          }
        },
      ),
    );
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在创建新计时器之前检查计时器是否处于活动状态 的相关文章

随机推荐

  • Yesod/持久一对一查询

    比如说 在 Yesod Persistent 中 我的模型设置如下 User ident Text password Text Maybe UniqueUser ident Question title Text asker UserId
  • 如何从 C 的“getcwd”函数返回 std::string

    很抱歉一直在讨论这个 但我正在努力学习 这有什么好处吗 是的 我关心内存泄漏 我找不到预分配 char 的好方法 因为似乎没有跨平台的方法 const string getcwd char a cwd getcwd NULL 0 strin
  • 使用 System.out.format 和 System.out.println 进行多线程

    我遇到了这个exampleOracle 的 Java 教程描述了多线程场景中的死锁 因此 在此示例中 我在第 17 行和第 18 行进行了以下更改 public class DeadLock static class Friend priv
  • 如何“完美”覆盖字典?

    我怎样才能使一个子类 完美 dict尽可能 最终目标是有一个简单的dict其中键是小写的 似乎应该有一些我可以重写的基本原语来使这项工作正常进行 但根据我所有的研究和尝试 情况似乎并非如此 If I 覆盖 getitem setitem t
  • 在这种情况下不理解 json_agg

    参考 查询包含 JSON 对象数组的 jsonb 列 begin CREATE TEMP TABLE segments segments id serial PRIMARY KEY payload jsonb INSERT INTO seg
  • 构造函数依赖注入 WebApi 属性

    我一直在寻找 WebApi 属性的非参数注入选项 我的问题是使用 Structuremap 是否真的可以实现这一点 我一直在谷歌搜索 但不断提出属性注入 我不喜欢使用 或构造函数注入的假设实现 但迄今为止我无法复制 我选择的容器是 Stru
  • C# guid 和 SQL uniqueidentifier

    我想创建一个 GUID 并将其存储在数据库中 在 C 中 可以使用 Guid NewGuid 创建 guid 这将创建一个 128 位整数 SQL Server 有一个 uniqueidentifier 列 其中包含一个巨大的十六进制数字
  • Plotly:如何在不同的轨迹上绘制带有时间值的标记?

    我有2个数据框 df1 包含列 time bid price df2 包含列 time flag 我想将 df1 的时间序列绘制为折线图 并且我想在 df2 flag 列值 True 的时间点上的点上放置标记 我怎样才能做到这一点 您可以通
  • 从任何地方访问 Azure SQL 数据库

    我们为赛车运动开发了一个基于 SQL 的应用程序 我们的一些客户正在考虑使用 Azure 来保存数据库 问题是他们到世界各地参加比赛 因此需要使用他们拥有的任何互联网连接来访问数据库 并且无法在防火墙规则中预先定义 IP 地址 是否可以有效
  • 如何模拟类方法(+)? [复制]

    这个问题在这里已经有答案了 需要为以下代码编写单元测试 我想对类方法canMakePayments进行mock 返回yes或no 到目前为止没有找到好的方法 因为canMakePayments是一个类方法 似乎所有OCMock方法都用于实例
  • Pandas 根据列中的值将数据帧拆分为多个 csv

    我有个问题与此类似但我需要采取进一步的措施 问题是我的文件包含 50k 多行 每行有 4 个值 Indicator Country Date 和 value 我想根据国家 地区拆分我的 CSV 我不知道有多少个国家 地区 因此所有名称相似的
  • 如何从 Pyspark 中的 Spark 数据帧创建边缘列表?

    我在用graphframes在 pyspark 中进行某些图形类型的分析 并想知道从顶点数据框架创建边列表数据框架的最佳方法是什么 例如 下面是我的顶点数据框 我有一个 id 列表 它们属于不同的组 id group a 1 b 2 c 1
  • 如何在 Python 中解释离散傅里叶变换 (FFT) 的结果

    关于这个主题有很多问题 我已经循环浏览了其中很多问题 获得了有关处理频率的概念性指导 here and here 有关 numpy 函数的文档 here 有关提取幅度和相位的操作信息 here 并走出站点 例如this or this 然而
  • 如何在 C# 中将行筛选的 DataGridView 设置为 DataTable

    我有 DataGridview 我过滤了其中的一些行 我需要将新数据源保存到新的 DataTable 由于某种原因我当前的代码不起作用 这里我如何尝试转换它 LogGridView DataSource as DataTable Defau
  • 通过子项无限嵌套 ngFor

    我发现了一些关于 Angular2 中嵌套 ngFor 循环的问题 但不是我正在寻找的问题 我想在列表中显示类别 我的 JSON 看起来像这样 Categories Title Categorie A Children Title Sub
  • 如何检索 LoaderExceptions 属性?

    我在更新服务参考时收到错误消息 自定义工具警告 无法加载一种或多种请求的类型 检索 LoaderExceptions 属性以获取更多信息 如何检索 LoaderExceptions 属性 Update 当我重新导入域对象项目时 我的错误消失
  • 在张量流中将 1 通道掩模应用于 3 通道张量

    我正在尝试将掩码 二进制 仅一个通道 应用于 RGB 图像 3 个通道 标准化为 0 1 我当前的解决方案是 我将 RGB 图像分割成它的通道 将其与蒙版相乘 然后再次连接这些通道 with tf variable scope apply
  • CodeIgniter 的 CAS 身份验证库

    我正在尝试在 CodeIgniter 应用程序中实现 CAS 身份验证 但我找不到当前是否有为其设置的库 我通过只包含类并添加一些肮脏的修复来进行管理 但如果有人知道合适的库 我认为这将是一个更干净的解决方案 我一直在浏览这里以及谷歌上的一
  • PHP:帮助处理此日期格式

    我正在使用 CodeIgniter 构建一个应用程序 我的 SQL Server 数据库中有包含日期 时间字段的记录 我正在从 m d Y 文本字段中输入的日期查询这些记录 这对应于数据库中的日期格式 不幸的是我在英国 所以我想输入日期 例
  • 如何在创建新计时器之前检查计时器是否处于活动状态

    我在另一个线程上遇到了这个计时器代码 当您按下RaisedButton同时进行多次 每次点击都会增加 1 秒 从而增加减少的速度 有关检查计时器是否已处于活动状态以及是否不让计时器处于活动状态的最简单方法的任何想法RaisedButton创