debounce function
Debounce (time) — invokes fn after delay of no further calls. Roadmap #176.
The returned closure cannot be cancelled: a pending invocation still fires
after delay even if the owner (e.g. a widget) is disposed. Use
debounceCancelable when you need to drop a pending call on teardown.
Audited: 2026-06-12 11:26 EDT
Implementation
VoidCallback debounce(VoidCallback fn, Duration delay) {
Timer? timer;
return () {
timer?.cancel();
final newTimer = Timer(
delay,
() {
fn();
},
);
timer = newTimer;
};
}