2024-06-16 22:24:32 -04:00
|
|
|
import 'dart:async';
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
|
|
|
|
|
|
|
|
|
void useInterval(VoidCallback callback, Duration delay) {
|
|
|
|
|
final savedCallback = useRef(callback);
|
|
|
|
|
savedCallback.value = callback;
|
|
|
|
|
|
|
|
|
|
useEffect(
|
|
|
|
|
() {
|
|
|
|
|
final timer = Timer.periodic(delay, (_) => savedCallback.value());
|
|
|
|
|
return timer.cancel;
|
|
|
|
|
},
|
|
|
|
|
[delay],
|
|
|
|
|
);
|
|
|
|
|
}
|
2024-08-20 10:14:07 -04:00
|
|
|
|
|
|
|
|
void useTimer(VoidCallback callback, Duration delay) {
|
|
|
|
|
final savedCallback = useRef(callback);
|
|
|
|
|
savedCallback.value = callback;
|
|
|
|
|
|
|
|
|
|
useEffect(
|
|
|
|
|
() {
|
|
|
|
|
final timer = Timer(delay, savedCallback.value);
|
|
|
|
|
return timer.cancel;
|
|
|
|
|
},
|
|
|
|
|
[delay],
|
|
|
|
|
);
|
|
|
|
|
}
|