import 'package:shared_preferences/shared_preferences.dart'; class LocalPreference { // Keys static const String _keyLogin = "is_logged_in"; static const String _keyUserId = "user_id"; static const String _keyAccessToken = "access_token"; static const String _keyRefreshToken = "refresh_token"; static const String _keyOnBoarding = "on_boarding_done"; // -------------------- LOGIN -------------------- static Future setLogin(bool value) async { final SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setBool(_keyLogin, value); } static Future getLogin() async { final SharedPreferences prefs = await SharedPreferences.getInstance(); return prefs.getBool(_keyLogin) ?? false; } // -------------------- USER ID -------------------- static Future setUserId(int id) async { final SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setInt(_keyUserId, id); } static Future getUserId() async { final SharedPreferences prefs = await SharedPreferences.getInstance(); return prefs.getInt(_keyUserId) ?? 0; } // -------------------- ACCESS TOKEN -------------------- static Future setAccessToken(String token) async { final SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setString(_keyAccessToken, token); } static Future getAccessToken() async { final SharedPreferences prefs = await SharedPreferences.getInstance(); return prefs.getString(_keyAccessToken) ?? ""; } static Future clearAccessToken() async { final SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.remove(_keyAccessToken); } // -------------------- REFRESH TOKEN -------------------- static Future setRefreshToken(String token) async { final SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setString(_keyRefreshToken, token); } static Future getRefreshToken() async { final SharedPreferences prefs = await SharedPreferences.getInstance(); return prefs.getString(_keyRefreshToken) ?? ""; } // -------------------- ONBOARDING -------------------- static Future setOnBoarding(bool value) async { final SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setBool(_keyOnBoarding, value); } static Future getOnBoarding() async { final SharedPreferences prefs = await SharedPreferences.getInstance(); return prefs.getBool(_keyOnBoarding) ?? true; } // -------------------- CLEAR -------------------- /// Clears all user data EXCEPT onboarding preference /// Use this after logout to preserve onboarding state static Future clearAllExceptOnBoarding() async { final SharedPreferences prefs = await SharedPreferences.getInstance(); // Get onboarding value before clearing final bool onBoardingValue = prefs.getBool(_keyOnBoarding) ?? true; // Clear all data await prefs.clear(); // Restore onboarding value await prefs.setBool(_keyOnBoarding, onBoardingValue); } /// Clears all data including onboarding /// Use this for complete reset static Future clearAll() async { final SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.clear(); } }