KeepAliveTimer.periodic constructor

KeepAliveTimer.periodic(
  1. Duration duration,
  2. void callback(
    1. Timer timer
    )
)

Implementation

factory KeepAliveTimer.periodic(
  Duration duration,
  void Function(Timer timer) callback,
) {
  final instance = KeepAliveTimer._empty();

  // Wrap the callback to increment tick count
  void wrappedCallback(Timer timer) {
    instance._tickCount++;
    callback(timer);
  }

  if (Zone.current == Zone.root) {
    instance._internalTimer =
        Zone.current.createPeriodicTimer(duration, wrappedCallback);
  } else {
    var boundCallback =
        Zone.current.bindUnaryCallbackGuarded<Timer>(wrappedCallback);
    instance._internalTimer =
        Zone.current.createPeriodicTimer(duration, boundCallback);
  }

  instance._isRunning = true;
  return instance;
}