import "dart:async"; import "package:flutter/material.dart"; import "package:hooks_riverpod/hooks_riverpod.dart"; final isSyncingProvider = StateProvider.autoDispose((ref) => false); final flashingMessagesProvider = StateProvider>((ref) => {}); final appLifecycleStateProvider = StreamProvider((ref) { final controller = StreamController(); final observer = _AppLifecycleObserver((state) { if (controller.isClosed) return; controller.add(state); }); WidgetsBinding.instance.addObserver(observer); ref.onDispose(() { WidgetsBinding.instance.removeObserver(observer); controller.close(); }); return controller.stream; }); class _AppLifecycleObserver extends WidgetsBindingObserver { final ValueChanged onChange; _AppLifecycleObserver(this.onChange); @override void didChangeAppLifecycleState(AppLifecycleState state) { onChange(state); } }