debounce method
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);
};
}