usePeriodicalSignal function

int usePeriodicalSignal({
  1. required Duration period,
  2. bool enabled = true,
})

Implementation

int usePeriodicalSignal({required Duration period, bool enabled = true}) {
  return useDebugGroup(
    debugLabel: "usePeriodicalSignal()",
    debugFillProperties: (properties) => properties
      ..add(DiagnosticsProperty("period", period))
      ..add(FlagProperty("enabled", value: enabled, ifFalse: "disabled")),
    () {
      final state = useState(0);
      final isMounted = useIsMounted();

      useEffect(() {
        if (enabled) {
          final timer = Timer.periodic(period, (_) {
            if (isMounted()) state.value++;
          });
          return timer.cancel;
        }
        return null;
      }, [enabled]);

      return state.value;
    },
  );
}