67 lines
1.6 KiB
Dart
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();
|
|
}
|
|
}
|