debounce<T> method

void debounce<T>(
  1. RxInterface<T> rx,
  2. void callback(
    1. T
    ), {
  3. Duration duration = const Duration(milliseconds: 400),
})

Calls callback after rx stops changing for duration. Useful for search-as-you-type, form validation, etc.

debounce(searchQuery, (q) => fetchResults(q),
  duration: const Duration(milliseconds: 500));

Implementation

void debounce<T>(
  RxInterface<T> rx,
  void Function(T) callback, {
  Duration duration = const Duration(milliseconds: 400),
}) {
  Timer? timer;
  _workers.add(rx.listen((val) {
    timer?.cancel();
    timer = Timer(duration, () => callback(val));
  }));
}