import 'dart:async'; class Debounce { static final Map _timers = {}; static void debounce(String tag, Duration duration, Function onExecute) { if (duration == Duration.zero) { _timers[tag]?.cancel(); _timers.remove(tag); onExecute(); } else { _timers[tag]?.cancel(); _timers[tag] = Timer(duration, () { _timers[tag]?.cancel(); _timers.remove(tag); onExecute(); }); } } static void cancel(String tag) { _timers[tag]?.cancel(); _timers.remove(tag); } }