在dart需要使用计时器需要导入包import 'dart:async';,包里面有个Timer
Timer的定义:
abstract class Timer {
factory Timer(Duration duration, void callback()) {
if (Zone.current == Zone.root) {
return Zone.current.createTimer(duration, callback);
}
return Zone.current
.createTimer(duration, Zone.current.bindCallbackGuarded(callback));
}
factory Timer.periodic(Duration duration, void callback(Timer timer)) {
if (Zone.current == Zone.root) {
return Zone.current.createPeriodicTimer(duration, callback);
}
var boundCallback = Zone.current.bindUnaryCallbackGuarded<Timer>(callback);
return Zone.current.createPeriodicTimer(duration, boundCallback);
}
static void run(void callback()) {
new Timer(Duration.zero, callback);
}
void cancel();
int get tick;
bool get isActive;
external static Timer _createTimer(Duration duration, void callback());
external static Timer _createPeriodicTimer(
Duration duration, void callback(Timer timer));
}
单次计时器
Timer(Duration(milliseconds: 200), () {
setState(() {
_turns2 += .2;
});
});
//JS中的单次计时器
setTimeout(() => {
}, 200);
永久计时器 Timer.periodic()
Timer.periodic(Duration(milliseconds: 200), (timer) {
if (true) {
//可以使用timer.cancel()来取消定时器,避免无限回调
timer.cancel();
}
});
var Timer = setInterval(() => {
}, 200);
clearInterval(Timer) //取消定时器
Timer.run()
尽快异步运行给定的回调
Timer.run(void Function() callback);
import 'dart:async';
main(List<String> args) {
Timer.run(methods);
}
void methods() async {
print("尽快异步运行给定的回调");
}