import 'dart:convert'; import 'package:shared_preferences/shared_preferences.dart'; import '../models/session.dart'; class StorageService { static const _SESSION_KEY = 'session'; static const _LAST_URL_KEY = 'last_url'; static const _STORAGE_PERMISSION_DIALOG_IGNORED = 'storage_permission_ignored'; Future storeLastUrl(String url) { return _store(_LAST_URL_KEY, url); } Future retrieveLastUrl() async { return await _retrieve(_LAST_URL_KEY); } Future hasLastUrl() async { return await _exists(_LAST_URL_KEY); } Future storeSession(Session session) { return _store(_SESSION_KEY, json.encode(session)); } Future retrieveSession() async { var retrieve = await _retrieve(_SESSION_KEY); return Session.fromJson(json.decode(retrieve!)); } Future hasSession() { return _exists(_SESSION_KEY); } Future removeSession() { return _remove(_SESSION_KEY); } Future storeStoragePermissionDialogIgnored() { return _store(_STORAGE_PERMISSION_DIALOG_IGNORED, true.toString()); } Future hasStoragePermissionDialogIgnored() { return _exists(_STORAGE_PERMISSION_DIALOG_IGNORED); } 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); } }