import 'dart:convert'; import 'package:shared_preferences/shared_preferences.dart'; import '../models/session.dart'; class StorageService { static const _sessionKey = 'session'; static const _lastUrlKey = 'last_url'; static const _storagePermissionDialogIgnoredKey = 'storage_permission_ignored'; Future storeLastUrl(String url) { return _store(_lastUrlKey, url); } Future retrieveLastUrl() async { return await _retrieve(_lastUrlKey); } Future hasLastUrl() async { return await _exists(_lastUrlKey); } Future storeSession(Session session) { return _store(_sessionKey, json.encode(session)); } Future retrieveSession() async { var retrieve = await _retrieve(_sessionKey); return Session.fromJson(json.decode(retrieve!)); } Future hasSession() { return _exists(_sessionKey); } Future removeSession() { return _remove(_sessionKey); } Future storeStoragePermissionDialogIgnored() { return _store(_storagePermissionDialogIgnoredKey, true.toString()); } Future hasStoragePermissionDialogIgnored() { return _exists(_storagePermissionDialogIgnoredKey); } Future _exists(String key) async { final SharedPreferences prefs = await SharedPreferences.getInstance(); return prefs.containsKey(key); } Future _remove(String key) async { final SharedPreferences prefs = await SharedPreferences.getInstance(); return prefs.remove(key); } Future _retrieve(String key) async { final SharedPreferences prefs = await SharedPreferences.getInstance(); return prefs.getString(key); } Future _store(String key, String value) async { final SharedPreferences prefs = await SharedPreferences.getInstance(); return prefs.setString(key, value); } }