Skip to content

Commit bd4c628

Browse files
committed
automatic ui reset
1 parent eb6ad1f commit bd4c628

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

app/lib/main.dart

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import 'package:background_fetch/background_fetch.dart';
2323
import 'package:dynamic_color/dynamic_color.dart';
2424
import 'package:flutter/foundation.dart';
2525
import 'package:flutter/material.dart';
26+
import 'package:flutter_hooks/flutter_hooks.dart';
2627
import 'package:flutter_mozilla_components/flutter_mozilla_components.dart'
2728
show GeckoBrowserService, GeckoLoggingService, LogLevel;
2829
import '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

Comments
 (0)