Timer.periodic constructor
Creates a new repeating timer.
The callback
is invoked repeatedly with duration
intervals until
canceled with the cancel function.
The exact timing depends on the underlying timer implementation.
No more than n
callbacks will be made in duration * n
time,
but the time between two consecutive callbacks
can be shorter and longer than duration
.
In particular, an implementation may schedule the next callback, e.g.,
a duration
after either when the previous callback ended,
when the previous callback started, or when the previous callback was
scheduled for - even if the actual callback was delayed.
A negative duration
is treated the same as Duration.zero.
Example:
var counter = 3;
Timer.periodic(const Duration(seconds: 2), (timer) {
print(timer.tick);
counter--;
if (counter == 0) {
print('Cancel timer');
timer.cancel();
}
});
// Outputs:
// 1
// 2
// 3
// "Cancel timer"
Implementation
factory Timer.periodic(Duration duration, void callback(Timer timer)) {
if (Zone.current == Zone.root) {
// No need to bind the callback. We know that the root's timer will
// be invoked in the root zone.
return Zone.current.createPeriodicTimer(duration, callback);
}
var boundCallback = Zone.current.bindUnaryCallbackGuarded<Timer>(callback);
return Zone.current.createPeriodicTimer(duration, boundCallback);
}