debounce method
Wait to collect multiple method calls for certain duration before allowing only one method call to proceed
Implementation
@protected
Future<void> debounce({
Duration duration = const Duration(milliseconds: 500),
}) async {
if (_debounceTimer?.isActive == true) _debounceTimer?.cancel();
final debounceCompleter = Completer();
_debounceTimer = Timer(
duration,
() => debounceCompleter.complete(),
);
await debounceCompleter.future;
}