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], ); } void useTimer(VoidCallback callback, Duration delay) { final savedCallback = useRef(callback); savedCallback.value = callback; useEffect( () { final timer = Timer(delay, savedCallback.value); return timer.cancel; }, [delay], ); }