When AppLifecycleState is changed to resumed, check for data updates.

This commit is contained in:
2024-11-15 22:14:31 +08:00
parent d749e7421e
commit 8513a739ec

View File

@@ -89,11 +89,13 @@ class _SyncDataWidget extends StatefulWidget {
State<_SyncDataWidget> createState() => _SyncDataWidgetState(); State<_SyncDataWidget> createState() => _SyncDataWidgetState();
} }
class _SyncDataWidgetState extends State<_SyncDataWidget> { class _SyncDataWidgetState extends State<_SyncDataWidget> with WidgetsBindingObserver {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
DataSync().addListener(update); DataSync().addListener(update);
WidgetsBinding.instance.addObserver(this);
lastCheck = DateTime.now();
} }
void update() { void update() {
@@ -106,6 +108,20 @@ class _SyncDataWidgetState extends State<_SyncDataWidget> {
void dispose() { void dispose() {
super.dispose(); super.dispose();
DataSync().removeListener(update); 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 @override