import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; class FFAppState extends ChangeNotifier { static FFAppState _instance = FFAppState._internal(); factory FFAppState() { return _instance; } FFAppState._internal(); static void reset() { _instance = FFAppState._internal(); } Future initializePersistedState() async { prefs = await SharedPreferences.getInstance(); _safeInit(() { _cliUUID = prefs.getString('ff_cliUUID') ?? _cliUUID; }); _safeInit(() { _ownerUUID = prefs.getString('ff_ownerUUID') ?? _ownerUUID; }); _safeInit(() { _userUUID = prefs.getString('ff_userUUID') ?? _userUUID; }); _safeInit(() { _devUUID = prefs.getString('ff_devUUID') ?? _devUUID; }); _safeInit(() { _email = prefs.getString('ff_email') ?? _email; }); _safeInit(() { _passwd = prefs.getString('ff_passwd') ?? _passwd; }); _safeInit(() { _device = prefs.getString('ff_device') ?? _device; }); _safeInit(() { _isLogged = prefs.getBool('ff_isLogged') ?? _isLogged; }); _safeInit(() { _local = prefs.getString('ff_local') ?? _local; }); } void update(VoidCallback callback) { callback(); notifyListeners(); } late SharedPreferences prefs; String _cliUUID = ''; String get cliUUID => _cliUUID; set cliUUID(String value) { _cliUUID = value; prefs.setString('ff_cliUUID', value); } String _ownerUUID = ''; String get ownerUUID => _ownerUUID; set ownerUUID(String value) { _ownerUUID = value; prefs.setString('ff_ownerUUID', value); } String _userUUID = ''; String get userUUID => _userUUID; set userUUID(String value) { _userUUID = value; prefs.setString('ff_userUUID', value); } String _devUUID = ''; String get devUUID => _devUUID; set devUUID(String value) { _devUUID = value; prefs.setString('ff_devUUID', value); } String _email = ''; String get email => _email; set email(String value) { _email = value; prefs.setString('ff_email', value); } String _passwd = ''; String get passwd => _passwd; set passwd(String value) { _passwd = value; prefs.setString('ff_passwd', value); } String _device = ''; String get device => _device; set device(String value) { _device = value; prefs.setString('ff_device', value); } bool _isLogged = false; bool get isLogged => _isLogged; set isLogged(bool value) { _isLogged = value; prefs.setBool('ff_isLogged', value); } String _local = ''; String get local => _local; set local(String value) { _local = value; prefs.setString('ff_local', value); } } void _safeInit(Function() initializeField) { try { initializeField(); } catch (_) {} } Future _safeInitAsync(Function() initializeField) async { try { await initializeField(); } catch (_) {} }