From 8513a739ecde35c01b9923ba511655b8f3602a3a Mon Sep 17 00:00:00 2001 From: nyne Date: Fri, 15 Nov 2024 22:14:31 +0800 Subject: [PATCH] When AppLifecycleState is changed to resumed, check for data updates. --- lib/pages/home_page.dart | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart index f73446c..097b9de 100644 --- a/lib/pages/home_page.dart +++ b/lib/pages/home_page.dart @@ -89,11 +89,13 @@ class _SyncDataWidget extends StatefulWidget { State<_SyncDataWidget> createState() => _SyncDataWidgetState(); } -class _SyncDataWidgetState extends State<_SyncDataWidget> { +class _SyncDataWidgetState extends State<_SyncDataWidget> with WidgetsBindingObserver { @override void initState() { super.initState(); DataSync().addListener(update); + WidgetsBinding.instance.addObserver(this); + lastCheck = DateTime.now(); } void update() { @@ -106,6 +108,20 @@ class _SyncDataWidgetState extends State<_SyncDataWidget> { void dispose() { super.dispose(); DataSync().removeListener(update); + WidgetsBinding.instance.removeObserver(this); + } + + late DateTime lastCheck; + + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + super.didChangeAppLifecycleState(state); + if(state == AppLifecycleState.resumed) { + if(DateTime.now().difference(lastCheck) > const Duration(minutes: 10)) { + lastCheck = DateTime.now(); + DataSync().downloadData(); + } + } } @override