diff --git a/lib/main.dart b/lib/main.dart index 177038d9..fb4aec87 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -14,6 +14,7 @@ import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_web_plugins/url_strategy.dart'; import 'package:hub/backend/notifications/notification_service.dart'; import 'package:hub/flutter_flow/flutter_flow_theme.dart'; +import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/internationalization.dart'; import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/pages/forgot_password_page/forgot_password_screen.dart'; @@ -115,7 +116,7 @@ class App extends StatefulWidget { context.findAncestorStateOfType<_AppState>()!; } -class _AppState extends State { +class _AppState extends State with WidgetsBindingObserver { Locale? _locale = FFLocalizations.getStoredLocale(); ThemeMode _themeMode = FlutterFlowTheme.themeMode; late AppStateNotifier _appStateNotifier; @@ -262,9 +263,9 @@ class _AppState extends State { }); } - @override - void initState() { + @override void initState() { super.initState(); + WidgetsBinding.instance.addObserver(this); log('DeviceUtil: ${DeviceUtil.getDeviceOSVersion()}'); @@ -278,14 +279,21 @@ class _AppState extends State { WidgetsBinding.instance.addPersistentFrameCallback((_) => initDeepLinks()); } - @override - void dispose() { + @override void dispose() { + WidgetsBinding.instance.removeObserver(this); _linkSubscription?.cancel(); super.dispose(); } - @override - Widget build(BuildContext context) { + @override void didChangeAppLifecycleState(AppLifecycleState state) async { + if (state == AppLifecycleState.resumed) { + + await StorageUtil().ensureInitialization(); + + } + } + + @override Widget build(BuildContext context) { return MaterialApp.router( key: navigatorKey, title: 'FRE ACCESS HUB', diff --git a/lib/pages/home_page/home_page_widget.dart b/lib/pages/home_page/home_page_widget.dart index b144b185..93ee9cfd 100644 --- a/lib/pages/home_page/home_page_widget.dart +++ b/lib/pages/home_page/home_page_widget.dart @@ -20,7 +20,7 @@ class HomePageWidget extends StatefulWidget { State createState() => _HomePageWidgetState(); } -class _HomePageWidgetState extends State { +class _HomePageWidgetState extends State { late HomePageModel _model; final scaffoldKey = GlobalKey(); @@ -30,14 +30,13 @@ class _HomePageWidgetState extends State { _localProfileComponentWidget = LocalProfileComponentWidget(); } - @override - void dispose() { + @override void dispose() { + super.dispose(); _model.dispose(); } - @override - void initState() { + @override void initState() { super.initState(); _model = createModel(context, () => HomePageModel()); @@ -49,8 +48,9 @@ class _HomePageWidgetState extends State { _model.textFieldFocusNode ??= FocusNode(); } - @override - Widget build(BuildContext context) { + + + @override Widget build(BuildContext context) { StorageUtil().context = context; return Scaffold( key: scaffoldKey, @@ -109,6 +109,10 @@ class _HomePageWidgetState extends State { ); } + + + + Container buildPage(BuildContext context) { return Container( decoration: BoxDecoration( diff --git a/lib/pages/reception_page/reception_page_widget.dart b/lib/pages/reception_page/reception_page_widget.dart index 5ab81e6d..e5eca1f6 100644 --- a/lib/pages/reception_page/reception_page_widget.dart +++ b/lib/pages/reception_page/reception_page_widget.dart @@ -22,10 +22,8 @@ class ReceptionPageWidget extends StatefulWidget { State createState() => _ReceptionPageWidgetState(); } -class _ReceptionPageWidgetState extends State - with WidgetsBindingObserver { - @override - void initState() { +class _ReceptionPageWidgetState extends State with WidgetsBindingObserver { + @override void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); () async { @@ -37,19 +35,13 @@ class _ReceptionPageWidgetState extends State LocalizationService.checkLocals(context); } - @override - void dispose() { - WidgetsBinding.instance - .removeObserver(this); // Remove a classe como observador + @override void dispose() { + WidgetsBinding.instance.removeObserver(this); super.dispose(); } - - - - @override - void didChangeAppLifecycleState(AppLifecycleState state) { + @override void didChangeAppLifecycleState(AppLifecycleState state) { log('() => state: $state'); if (state == AppLifecycleState.resumed) { setState(() { diff --git a/lib/shared/helpers/secure_storage_helper.dart b/lib/shared/helpers/secure_storage_helper.dart index 9f87fae0..5cf403ab 100644 --- a/lib/shared/helpers/secure_storage_helper.dart +++ b/lib/shared/helpers/secure_storage_helper.dart @@ -58,7 +58,7 @@ class SecureStorageHelper extends ChangeNotifier implements Storage { return value == 'true'; } log('SecureStorageHelper -> getBool $value for key: $key'); - return value; + return value == 'true' || value == true; } Future getObject(String key) async { diff --git a/lib/shared/utils/storage_util.dart b/lib/shared/utils/storage_util.dart index edcb815c..4dc1e80a 100644 --- a/lib/shared/utils/storage_util.dart +++ b/lib/shared/utils/storage_util.dart @@ -1,4 +1,5 @@ import 'dart:developer'; +import 'dart:ffi'; import 'package:flutter/material.dart'; import 'package:hub/shared/helpers/secure_storage_helper.dart'; @@ -37,6 +38,7 @@ class StorageUtil { late final SQLiteStorageHelper _sqliteStorage; late final SecureStorageHelper _secureStorage; late final SharedPreferencesStorageHelper _sharedPreferences; + bool _initialized = true; static Future set(StorageData data) async { try { @@ -119,13 +121,15 @@ class StorageUtil { Future ensureInitialization() async { try { - _sqliteStorage = SQLiteStorageHelper(); - _secureStorage = SecureStorageHelper(); - _sharedPreferences = SharedPreferencesStorageHelper(); + log('StorageUtil: Starting initialization'); + + await initSharedPreferences(); await initSecureStorage(); await initSQLiteStorage(); + _initialized = false; + } catch (e, s) { log('Error initializing storage: $e'); LogUtil.requestAPIFailed('$UniqueKey', '$UniqueKey', 'StorageUtil', e, s); @@ -134,6 +138,7 @@ class StorageUtil { Future initSharedPreferences() async { try { + if(_initialized) _sharedPreferences = SharedPreferencesStorageHelper(); _sharedPreferences.prefs ??= await SharedPreferences.getInstance(); final bool milestone = _sharedPreferences.prefs?.getBool('fre_isFirstRun') ?? true; @@ -156,6 +161,7 @@ class StorageUtil { Future initSecureStorage() async { log('SecureStorageHelper: Starting initialization'); try { + if(_initialized) _secureStorage = SecureStorageHelper(); _email = await _secureStorage.getString('fre_email'); _passwd = await _secureStorage.getString('fre_passwd'); _deviceType = await _secureStorage.getString('fre_deviceType'); @@ -178,6 +184,7 @@ class StorageUtil { Future initSQLiteStorage() async { log('SQLiteStorageHelper: Starting initialization'); try { + if(_initialized) _sqliteStorage = SQLiteStorageHelper(); await _sqliteStorage.database; _devUUID = await _sqliteStorage.get('fre_devUUID') ?? ''; _userUUID = await _sqliteStorage.get('fre_userUUID') ?? ''; @@ -187,8 +194,7 @@ class StorageUtil { _cliUUID = await _sqliteStorage.get('fre_cliUUID') ?? ''; _ownerUUID = await _sqliteStorage.get('fre_ownerUUID') ?? ''; _cliName = await _sqliteStorage.get('fre_cliName') ?? ''; - _petAmountRegister = - await _sqliteStorage.get('fre_petAmountRegister') ?? ''; + _petAmountRegister = await _sqliteStorage.get('fre_petAmountRegister') ?? ''; _whatsapp = await _sqliteStorage.getBoolean('fre_whatsapp'); _provisional = await _sqliteStorage.getBoolean('fre_provisional'); _pets = await _sqliteStorage.getBoolean('fre_pets');