fix: Make transactions atomic / AutoLogout

This commit is contained in:
2026-08-03 02:22:26 +02:00
parent 6060ca2713
commit 0997d110d4
14 changed files with 604 additions and 285 deletions
+15
View File
@@ -2,7 +2,9 @@ import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:provider/provider.dart';
import 'app_lifecycle_lock.dart';
import '../models/settings.dart';
import '../viewmodels/pin_lock_view_model.dart';
import '../viewmodels/settings_view_model.dart';
import '../theme.dart';
import '../l10n/app_localizations.dart';
@@ -17,15 +19,28 @@ class KoolTabApp extends StatefulWidget {
}
class _KoolTabAppState extends State<KoolTabApp> {
late final AppLifecycleLockObserver _lifecycleLockObserver;
@override
void initState() {
super.initState();
_lifecycleLockObserver = AppLifecycleLockObserver(
onLock: () => context.read<PinLockViewModel>().lock(),
);
WidgetsBinding.instance.addObserver(_lifecycleLockObserver);
WidgetsBinding.instance.addPostFrameCallback((_) {
context.read<SettingsViewModel>().ensureLoaded();
});
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(_lifecycleLockObserver);
super.dispose();
}
@override
Widget build(BuildContext context) {
final settings = context.watch<SettingsViewModel>().settings;
+20
View File
@@ -0,0 +1,20 @@
import 'package:flutter/material.dart';
class AppLifecycleLockObserver extends WidgetsBindingObserver {
final VoidCallback onLock;
AppLifecycleLockObserver({required this.onLock});
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state) {
case AppLifecycleState.inactive:
case AppLifecycleState.hidden:
case AppLifecycleState.paused:
case AppLifecycleState.detached:
onLock();
case AppLifecycleState.resumed:
break;
}
}
}