useAppLifecycleState function

AppLifecycleState useAppLifecycleState({
  1. void onPaused()?,
  2. void onResumed()?,
  3. void onHidden()?,
  4. void onInactive()?,
})

Implementation

AppLifecycleState useAppLifecycleState({
  void Function()? onPaused,
  void Function()? onResumed,
  void Function()? onHidden,
  void Function()? onInactive,
}) {
  return useDebugGroup(debugLabel: "useAppLifecycleState()", () {
    final wrappedOnPaused = useValueWrapper(onPaused);
    final wrappedOnResumed = useValueWrapper(onResumed);
    final wrappedOnHidden = useValueWrapper(onHidden);
    final wrappedOnInactive = useValueWrapper(onInactive);

    final lifecycleState = useState(WidgetsBinding.instance.lifecycleState!);

    useEffect(() {
      final observer = _Observer(onChanged: (state) {
        if (state == AppLifecycleState.paused) wrappedOnPaused.value?.call();
        if (state == AppLifecycleState.resumed) wrappedOnResumed.value?.call();
        if (state == AppLifecycleState.hidden) wrappedOnHidden.value?.call();
        if (state == AppLifecycleState.inactive) wrappedOnInactive.value?.call();
        lifecycleState.value = state;
      });
      WidgetsBinding.instance.addObserver(observer);
      return () => WidgetsBinding.instance.removeObserver(observer);
    });

    return lifecycleState.value;
  });
}