throttle static method

void Function() throttle(
  1. void action(), {
  2. Duration duration = const Duration(milliseconds: 300),
})

Throttles repeated calls to at most once per duration.

Implementation

static void Function() throttle(
  void Function() action, {
  Duration duration = const Duration(milliseconds: 300),
}) {
  DateTime? lastRun;
  return () {
    final now = DateTime.now();
    if (lastRun == null || now.difference(lastRun!) >= duration) {
      lastRun = now;
      action();
    }
  };
}