21 lines
572 B
Dart
21 lines
572 B
Dart
|
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);
|
||
|
}
|
||
|
}
|