debounce method

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

Calls callback when the value changes, but only after duration has passed without any further changes. Extremely useful for search fields to avoid spamming an API.

Implementation

VoidCallback debounce(Duration duration, void Function(T value) callback) {
  Timer? debounceTimer;
  void listener() {
    debounceTimer?.cancel();
    debounceTimer = Timer(duration, () => callback(value));
  }

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