debounce<T> function
Worker
debounce<T>(
- RxInterface<
T> observable, - WorkerCallback<
T> callback, { - Duration time = const Duration(milliseconds: 500),
Executes a callback after delay of no changes (debounce).
Similar to interval but sends the last value after user stops changing it.
Sample:
final searchQuery = ''.obs;
Worker worker;
void onInit() {
worker = debounce(searchQuery, (value) {
print('search for: $value');
}, time: Duration(milliseconds: 500));
}
Implementation
Worker debounce<T>(
RxInterface<T> observable,
WorkerCallback<T> callback, {
Duration time = const Duration(milliseconds: 500),
}) {
Timer? timer;
void listener() {
timer?.cancel();
timer = Timer(time, () {
callback(observable.value);
});
}
observable.addListener(listener);
return Worker(() {
timer?.cancel();
observable.removeListener(listener);
});
}