interval<T> function
Worker
interval<T>(
- RxInterface<
T> observable, - WorkerCallback<
T> callback, { - Duration delay = const Duration(seconds: 1),
- dynamic condition,
Executes a callback after delay if the value of observable doesn't change.
Sample:
final count = 0.obs;
Worker worker;
void onInit() {
worker = interval(count, (value) {
print('value after interval: $value');
}, delay: Duration(seconds: 1));
}
Implementation
Worker interval<T>(
RxInterface<T> observable,
WorkerCallback<T> callback, {
Duration delay = const Duration(seconds: 1),
dynamic condition,
}) {
Timer? timer;
bool isActive = false;
void listener() {
if (!_checkCondition(condition)) return;
if (isActive) return;
isActive = true;
timer?.cancel();
timer = Timer(delay, () {
callback(observable.value);
isActive = false;
});
}
observable.addListener(listener);
return Worker(() {
timer?.cancel();
observable.removeListener(listener);
});
}