24 lines
825 B
Dart
24 lines
825 B
Dart
import 'dart:async';
|
||
import 'dart:ui';
|
||
|
||
class Debounce {
|
||
// Фабричный конструктор, возвращающий экзепляр класса Debounce. Паттерн Singleton
|
||
factory Debounce() => _instance;
|
||
|
||
// Приватный конструктор (Не даёт создание класса извне)
|
||
Debounce._();
|
||
|
||
// Статический экземпляр класса
|
||
static final Debounce _instance = Debounce._();
|
||
|
||
static Timer? _timer;
|
||
|
||
// Статический метод, где action функция, совершающая действие, а delay совершает задержку)
|
||
static void run(
|
||
{required VoidCallback action,
|
||
Duration delay = const Duration(milliseconds: 500)}) {
|
||
_timer?.cancel();
|
||
_timer = Timer(delay, action);
|
||
}
|
||
}
|