我在另一个帖子上发现了这个计时器的代码。当您同时多次按下 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")
],
),
);
}
if(!_timer?.isActive)
却无法工作。我将其更改为if(_timer !=null)
,这在我的特定代码中确实有效。感谢你的解决方案! - Andrew Caprario