abstract class BaseStorage { Future init(); Future set(String key, T value); Future get(String key); Future delete(String key); Future clearAll(); } enum Storage { secureStorage, sharedPreferences, databaseStorage, } enum SharedPreferencesKey { isFirstRun, } extension SharedPreferencesKeyExtension on SharedPreferencesKey { String get value { switch (this) { case SharedPreferencesKey.isFirstRun: return 'fre_isFirstRun'; default: return ''; } } } enum SecureStorageKey { isLogged, email, password, deviceType, token, accessPass, panicPass, fingerprintPass, haveLocal, deviceDescription, } extension SecureStorageKeyExtension on SecureStorageKey { String get value { switch (this) { case SecureStorageKey.isLogged: return 'fre_isLogged'; case SecureStorageKey.email: return 'fre_email'; case SecureStorageKey.password: return 'fre_passwd'; case SecureStorageKey.deviceType: return 'fre_deviceType'; case SecureStorageKey.token: return 'fre_token'; case SecureStorageKey.accessPass: return 'fre_accessPass'; case SecureStorageKey.panicPass: return 'fre_panicPass'; case SecureStorageKey.fingerprintPass: return 'fre_fingerprintPass'; case SecureStorageKey.haveLocal: return 'fre_have_local'; case SecureStorageKey.deviceDescription: return 'fre_deviceDescription'; default: return ''; } } } enum KeychainStorageKey { devUUID, userUUID, userDevUUID, status, userName, clientUUID, ownerName, ownerUUID, clientName, petAmount, whatsapp, provisional, pets, local, notify, fingerprint, access, panic, person, requestOSNotification, isNewVersion, } extension KeychainStorageKeyExtension on KeychainStorageKey { String get value { switch (this) { case KeychainStorageKey.devUUID: return 'fre_devUUID'; case KeychainStorageKey.userUUID: return 'fre_userUUID'; case KeychainStorageKey.userDevUUID: return 'fre_userDevUUID'; case KeychainStorageKey.status: return 'fre_status'; case KeychainStorageKey.userName: return 'fre_userName'; case KeychainStorageKey.clientUUID: return 'fre_cliUUID'; case KeychainStorageKey.ownerUUID: return 'fre_ownerUUID'; case KeychainStorageKey.clientName: return 'fre_cliName'; case KeychainStorageKey.ownerName: return 'fre_ownerName'; case KeychainStorageKey.petAmount: return 'fre_petAmountRegister'; case KeychainStorageKey.whatsapp: return 'fre_whatsapp'; case KeychainStorageKey.provisional: return 'fre_provisional'; case KeychainStorageKey.pets: return 'fre_pets'; case KeychainStorageKey.local: return 'fre_local'; case KeychainStorageKey.notify: return 'fre_notify'; case KeychainStorageKey.fingerprint: return 'fre_fingerprint'; case KeychainStorageKey.access: return 'fre_access'; case KeychainStorageKey.panic: return 'fre_panic'; case KeychainStorageKey.person: return 'fre_person'; case KeychainStorageKey.requestOSNotification: return 'fre_requestOSnotification'; case KeychainStorageKey.isNewVersion: return 'fre_isNewVersion'; default: return ''; } } }