import 'package:shared_preferences/shared_preferences.dart'; class SettingsService { static const _keyServerUrl = 'server_url'; static const _keyToken = 'token'; static const _keyAutoUpload = 'auto_upload'; static const _keyUploaded = 'uploaded_keys'; final SharedPreferences _prefs; SettingsService(this._prefs); String? get serverUrl => _prefs.getString(_keyServerUrl); Future setServerUrl(String v) => _prefs.setString(_keyServerUrl, v); String? get token => _prefs.getString(_keyToken); Future setToken(String v) => _prefs.setString(_keyToken, v); bool get autoUpload => _prefs.getBool(_keyAutoUpload) ?? false; Future setAutoUpload(bool v) => _prefs.setBool(_keyAutoUpload, v); bool get isConfigured => serverUrl != null && token != null; Set getUploadedKeys() => _prefs.getStringList(_keyUploaded)?.toSet() ?? {}; Future addUploadedKey(String key) { final keys = _prefs.getStringList(_keyUploaded) ?? []; keys.add(key); return _prefs.setStringList(_keyUploaded, keys); } Future addUploadedKeys(List newKeys) { final keys = _prefs.getStringList(_keyUploaded) ?? []; keys.addAll(newKeys); return _prefs.setStringList(_keyUploaded, keys); } static Future init() async { final prefs = await SharedPreferences.getInstance(); return SettingsService(prefs); } }