debounce.dart 380 B

123456789101112131415161718192021222324
  1. import 'dart:async';
  2. import 'package:flutter/material.dart';
  3. class Debounce {
  4. final Duration duration;
  5. Timer? _timer;
  6. Debounce({
  7. this.duration = const Duration(milliseconds: 1000),
  8. });
  9. void call(VoidCallback action) {
  10. dispose();
  11. _timer = Timer(duration, () {
  12. action();
  13. });
  14. }
  15. void dispose() {
  16. _timer?.cancel();
  17. _timer = null;
  18. }
  19. }