import 'dart:async'; import 'dart:ui'; class Debounce { factory Debounce() => _instance; Debounce._(); static final Debounce _instance = Debounce._(); static Timer? _timer; // если в течении 0.5 сек появится новый вызов (изменится текст в поле ввода) // то текущий вызов заменяется новым static void run ( VoidCallback action, { Duration delay = const Duration(milliseconds: 500), }) { _timer?.cancel(); _timer = Timer(delay, action); } }