@@ -23,6 +23,7 @@ import 'package:background_fetch/background_fetch.dart';
2323import 'package:dynamic_color/dynamic_color.dart' ;
2424import 'package:flutter/foundation.dart' ;
2525import 'package:flutter/material.dart' ;
26+ import 'package:flutter_hooks/flutter_hooks.dart' ;
2627import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'
2728 show GeckoBrowserService, GeckoLoggingService, LogLevel;
2829import 'package:home_widget/home_widget.dart' ;
@@ -48,6 +49,26 @@ class _MainWidget extends HookConsumerWidget {
4849 Widget build (BuildContext context, WidgetRef ref) {
4950 final rootKey = ref.watch (appStateKeyProvider);
5051
52+ final pauseTime = useRef <DateTime ?>(null );
53+ useOnAppLifecycleStateChange ((previous, current) {
54+ switch (current) {
55+ case AppLifecycleState .resumed:
56+ if (pauseTime.value != null &&
57+ DateTime .now ().difference (pauseTime.value! ) >
58+ const Duration (minutes: 30 )) {
59+ //Rebuild widget tree after long time of inactivity
60+ ref.read (appStateKeyProvider.notifier).reset ();
61+ logger.i ('UI reset' );
62+ }
63+ pauseTime.value = null ;
64+ case AppLifecycleState .detached:
65+ case AppLifecycleState .inactive:
66+ case AppLifecycleState .hidden:
67+ case AppLifecycleState .paused:
68+ pauseTime.value ?? = DateTime .now ();
69+ }
70+ });
71+
5172 final themeMode = ref.watch (
5273 generalSettingsWithDefaultsProvider.select ((value) => value.themeMode),
5374 );
0 commit comments