flutter-freaccess-hub/lib/shared/helpers/shared_preferences_storage_...

67 lines
1.6 KiB
Dart

import 'package:hub/shared/utils/storage_util.dart';
import 'package:shared_preferences/shared_preferences.dart';
class SharedPreferencesStorageHelper implements Storage {
late SharedPreferences _prefs;
static final SharedPreferencesStorageHelper _instance =
SharedPreferencesStorageHelper._internal();
factory SharedPreferencesStorageHelper() {
return _instance;
}
SharedPreferencesStorageHelper._internal();
Future<void> ensureInitialization() async {
_prefs = await SharedPreferences.getInstance();
_isFirstRun = _prefs.getBool('first_run') ?? true;
}
bool _isFirstRun = true;
bool get isFirstRun => _isFirstRun;
set isFirstRun(bool value) {
_isFirstRun = value;
set('first_run', value);
}
@override
Future<void> set(String key, dynamic value) async {
if (value is bool) {
await _prefs.setBool(key, value);
} else if (value is String) {
await _prefs.setString(key, value);
} else if (value is int) {
await _prefs.setInt(key, value);
} else if (value is double) {
await _prefs.setDouble(key, value);
} else if (value is List<String>) {
await _prefs.setStringList(key, value);
}
}
@override
Future<dynamic> get(String key) async {
try {
return _prefs.get(key);
} catch (e) {
// Log or handle the error
return null;
}
}
@override
Future<void> delete(String key) async {
try {
await _prefs.remove(key);
} catch (e) {
// Log or handle the error
}
}
Future<void> purge() async {
await _prefs.clear();
await ensureInitialization();
}
}