debounce function Null safety

Rule debounce(
  1. [Duration duration = Duration.zero]
)

debounce action dispatching in specified duration

Implementation

Rule debounce([Duration duration = Duration.zero]) {
  return (dispatcher, next) {
    for (final prevDispatcher in dispatcher.dispatching) {
      if (prevDispatcher.action.runtimeType == dispatcher.action.runtimeType) {
        prevDispatcher.cancel();
      }
    }
    dispatcher.on(cancel: Timer(duration, next).cancel);
  };
}