草庐IT

dart - 暂停 Flutter 倒数计时器

coder 2023-07-24 原文

我一直在玩 Dart Timer 类,我让它以最基本的形式工作,但是我一直在尝试向它添加暂停功能。我查看了他们的文档,但关于他们的 Timer 类的内容并不多......

有什么方法可以在点击时暂停和恢复计时器/倒计时?这是我到目前为止所取得的成就:

import 'package:flutter/material.dart';
import 'dart:async';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}


class _MyHomePageState extends State<MyHomePage> {

  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;
          }
        }));
  }


  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")
          ],
        ));
  }
}

最佳答案

没有内置的 pause 函数,因为 Timer 类主要用于稍后安排代码块。

您的用例是什么? Stopwatch类具有暂停和恢复功能。

关于dart - 暂停 Flutter 倒数计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55384326/

有关dart - 暂停 Flutter 倒数计时器的更多相关文章

  1. ruby-on-rails - Rails 3 - 过滤器链暂停为 :authentication rendered or redirected - 2

    我仍然收到标题中的“错误”消息,但不知道如何解决。在ApplicationController中,classApplicationController在routes.rb#match'set_activity_account/:id/:value'=>'users#account_activity',:as=>:set_activity_account--thisdoesn'tworkaswell..resources:usersdomemberdoget:action_a,:action_bendcollectiondoget'account_activity'endend和User

  2. ruby - Ruby 性能中的计时器 - 2

    我正在寻找一个用ruby​​演示计时器的在线示例,并发现了下面的代码。它按预期工作,但这个简单的程序使用30Mo内存(如Windows任务管理器中所示)和太多CPU有意义吗?非常感谢deftime_blockstart_time=Time.nowThread.new{yield}Time.now-start_timeenddefrepeat_every(seconds)whiletruedotime_spent=time_block{yield}#Tohandle-vesleepinteravalsleep(seconds-time_spent)iftime_spent

  3. ruby-on-rails - 在 Rails 中,update_attributes 的倒数是什么? - 2

    在Rails中,update_attributes!的逆运算是什么?换句话说,是什么将记录映射到属性散列以重新创建该记录及其所有子记录?答案不是ActiveRecord.attributes,因为它不会递归到子对象中。澄清您是否有以下情况:classFoo然后你可以像这样传递一个散列{"name"=>"afoo","bars_attributes"=>[{"name"=>"abar}...]}到update_attributes。但目前尚不清楚如何为此目的以编程方式轻松生成这样的哈希值。编辑:正如我在评论中提到的,我可以做类似的事情:foo.as_json(:include=>:bar

  4. Flutter 环境变量配置和flutter doctor中的错误解决 - 2

    一、环境变量右键点击我的电脑-属性:然后找到环境变量 1.Android的SDK不在C盘的话需要额外配这个到用户环境变量:ANDROID_HOMED:\AndroidSDK2.然后在系统变量:Path中添加一条这样的值        D:\Flutter\flutter\bin             这个值写flutter包解压的实际地址即可 3.在系统变量中添加两个镜像变量:        变量名:FLUTTER_STORAGE_BASE_URL      变量值:https://storage.flutter-io.cn        变量名:PUB_HOSTED_URL      变量

  5. ruby-on-rails - 遵循 DCI 设计时在哪里进行验证? - 2

    我正在按照DCI构建新Rails应用程序的行为,但我对将验证放在哪里有一些疑问。传统上,如果您要使用ActiveRecord模型管理您的数据,验证是在继承自AR的特定类中定义的,并且它们似乎适合作为数据层的一部分。然而,在我看来,只在特定角色下进行某些验证是有意义的,并且只有当对象在该上下文中时才应检查它们,在所有其他情况下都将被忽略。这基本上意味着这些验证应该在特定角色上定义,并且当对象在有意义的上下文中使用时,应该使用这些角色模块扩展对象。您认为将这些验证保留在角色上是个好主意吗?如果是这样,您如何声明它们而不污染与对象相同的类的其他实例?如果我想使用ActiveRecord验证,

  6. C#初级_定时器 - 2

    文章目录一、引言二、Timers1.System.Threading.Timer1.1.简单使用1.2.注意点2.System.Timers.Timer2.1.概述🔺2.2.注意点三、总结一、引言在开发中,会遇到并行处理的需求。有时只需要使用task(底层是创建个线程)来处理一下就好了。而有时则在并行处理的基础上还有时间的要求,较常见的就是每隔一定时间处理一次。当然,这用task肯定可以实现,但是时间这块得自己控制,无疑增加了工作量和不确定性。.NET提供了叫做定时器(timer,也叫计时器)的类,它在并行处理的基础上,带了时间参数的设置,可以满足这一需求。其实本文标题与其叫C#定时器,不如叫

  7. system.threading.Timer每天尝试同时制作计时器 - 2

    我在控制台服务应用中使用system.threading.timer,并尝试每天同时制作计时器。最初,如果我在时间之前启动该应用程序,我会很好。就像我的时间是10:05,我从10:00启动该应用程序,我们很好。但是,如果我从10:06开始,我就不知道如何告诉时间台下24小时。谢谢你的帮助!publicvoidSetUpTimer(TimeSpanalertTime){DateTimecurrent=DateTime.Now;TimeSpantimeToGo=alertTime-current.TimeOfDay;if(timeToGo{EventLog.WriteEntry("MhyApp",

  8. ruby - 如何在 Ruby 中以毫秒为单位计时操作? - 2

    我想计算出特定函数使用了多少毫秒。所以我四处寻找,但找不到以毫秒精度在Ruby中获取时间的方法。你是怎么做到的?在大多数编程语言中,它就像start=now.millisecondsmyfunction()end=now.millisecondstime=end-start 最佳答案 您可以使用ruby的Time类。例如:t1=Time.now#processing...t2=Time.nowdelta=t2-t1#inseconds现在,delta是一个float对象,您可以获得类将提供的尽可能精细的结果。

  9. javascript - 有没有办法扭转暂停提交表单的情况,还是一开始就不要提交会更好? - 2

    我正在尝试制作一个简单的网络应用程序。在我的登录页面中,我有一个带有文本字段、密码和提交按钮的表单。如果任一字段为空,将阻止提交表单。这是我使用的脚本:functioncheckLoginCredentials(){varusernameFormValue=$("#usernameForm").val().trim();varpasswordFormValue=$("#passwordForm").val().trim();varvalidated;$("#loginForm").submit(function(event){if(usernameFormValue===""||pas

  10. javascript - 声音播放/停止/暂停 - 2

    我正在开发一个可靠的JavaScript库。我可以用下面的代码播放声音。varsoundPlayer=null;functionplaySound(){soundPlayer=newAudio(soundName).play();}如何停止和暂停此音频?当我这样尝试时:soundPlayer.pause();或者soundPlayer.stop();但是我得到这个错误:UncaughtTypeError:soundPlayer.stopisnotafunction我该怎么做? 最佳答案 如果你改变它:soundPlayer=newA

随机推荐