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 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 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) { await _prefs.setStringList(key, value); } } @override Future get(String key) async { try { return _prefs.get(key); } catch (e) { // Log or handle the error return null; } } @override Future delete(String key) async { try { await _prefs.remove(key); } catch (e) { // Log or handle the error } } Future purge() async { await _prefs.clear(); await ensureInitialization(); } }