interval method

VoidCallback interval(
  1. Duration duration,
  2. void callback(
    1. T value
    )
)

Calls callback at most once every duration upon changes. Useful to restrict the firing rate of rapid events (e.g. scroll metrics).

Implementation

VoidCallback interval(Duration duration, void Function(T value) callback) {
  Timer? intervalTimer;
  bool canFire = true;

  void listener() {
    if (canFire) {
      callback(value);
      canFire = false;
      intervalTimer = Timer(duration, () => canFire = true);
    }
  }

  addListener(listener);
  return () {
    intervalTimer?.cancel();
    removeListener(listener);
  };
}