51 lines
1.1 KiB
Dart
51 lines
1.1 KiB
Dart
// Dart imports:
|
|
import 'dart:async';
|
|
|
|
// Flutter imports:
|
|
import 'package:flutter/material.dart';
|
|
|
|
///
|
|
/// Компонент для выполнения отложенных операций
|
|
///
|
|
class Debouncer {
|
|
///
|
|
/// Компонент для выполнения отложенных операций
|
|
///
|
|
/// Пример использования
|
|
///
|
|
/// ```dart
|
|
/// final Debouncer _searchDelayer = Debouncer(
|
|
/// delay: const Duration(milliseconds: 300),
|
|
/// );
|
|
///
|
|
/// Widget _buildButton(BuildContext) {
|
|
/// return ElevatedButton(
|
|
/// onPressed: () {
|
|
/// _debouncer.run(() {
|
|
/// debugPrint('Type your code here');
|
|
/// });
|
|
/// },
|
|
/// );
|
|
/// }
|
|
/// ```
|
|
///
|
|
Debouncer({
|
|
required this.delay,
|
|
});
|
|
|
|
/// Время через которое необходимо вызывать функцию
|
|
final Duration delay;
|
|
|
|
/// Таймер
|
|
Timer? _timer;
|
|
|
|
///
|
|
/// Запуск отложенного события
|
|
///
|
|
void run(VoidCallback action) {
|
|
_timer?.cancel();
|
|
|
|
_timer = Timer(delay, action);
|
|
}
|
|
}
|