26 lines
523 B
Dart
26 lines
523 B
Dart
import 'dart:async';
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
class CallbackDebouncer {
|
|
CallbackDebouncer(this._delay);
|
|
|
|
final Duration _delay;
|
|
Timer? _timer;
|
|
|
|
/// Calls the given [callback] after the given duration has passed.
|
|
void call(VoidCallback callback) {
|
|
if (_delay == Duration.zero) {
|
|
callback();
|
|
} else {
|
|
_timer?.cancel();
|
|
_timer = Timer(_delay, callback);
|
|
}
|
|
}
|
|
|
|
/// Stops any running timers and disposes this instance.
|
|
void dispose() {
|
|
_timer?.cancel();
|
|
}
|
|
}
|