Flutter 如何在创建新计时器之前检查计时器是否处于活动状态
我在另一个线程上遇到了计时器的代码。同时按下Flutter 如何在创建新计时器之前检查计时器是否处于活动状态,flutter,dart,timer,Flutter,Dart,Timer,我在另一个线程上遇到了计时器的代码。同时按下raised按钮多次时,每次单击都会增加-1秒,从而增加减少的速率 关于检查计时器是否已激活以及是否不让RaisedButton创建新计时器的最简单方法,您有什么想法吗。谢谢 import 'dart:async'; [...] Timer _timer; int _start = 10; void startTimer() { const oneSec = const Duration(seconds: 1); _timer = new
raised按钮
多次时,每次单击都会增加-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")
],
),
);
}
导入'dart:async';
[...]
定时器(u定时器),;
int _start=10;
void startTimer(){
const oneSec=const持续时间(秒:1);
_定时器=新定时器。周期性(
一秒,
(计时器)=>设置状态(
() {
如果(_start<1){
timer.cancel();
}否则{
_开始=_开始-1;
}
},
),
);
}
@凌驾
无效处置(){
_timer.cancel();
super.dispose();
}
小部件构建(构建上下文){
归还新脚手架(
appBar:appBar(标题:文本(“计时器测试”)),
正文:专栏(
儿童:[
升起的按钮(
已按下:(){
startTimer();
},
子项:文本(“开始”),
),
文本($\u开始)
],
),
);
}
使用timer
s的isActive
属性添加检查,查看\u timer
是否已处于活动状态。如果它已处于活动状态,则不会创建新的
例如:
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;
}
},
),
);
}
}
void startTimer(){
const oneSec=const持续时间(秒:1);
如果(!\u定时器?.isActive){
_定时器=新定时器。周期性(
一秒,
(计时器)=>设置状态(
() {
如果(_start<1){
timer.cancel();
}否则{
_开始=_开始-1;
}
},
),
);
}
}
我尝试了您的解决方案,并使其发挥了作用。但是,当我在自己的项目中使用相同的逻辑时,尽管这只是一个帮助我学习的项目,如果(!\u timer?.isActive)
不起作用。我将其更改为if(_timer!=null)
,这在我的特定代码中确实有效。谢谢你的解决方案!