import 'dart:convert'; import 'package:shared_preferences/shared_preferences.dart'; class SharedPreferencesUtil { SharedPreferencesUtil._(); static SharedPreferencesUtil? _instance; late SharedPreferences sharedPreferences; static SharedPreferencesUtil? getInstance() { _instance ??= SharedPreferencesUtil._(); return _instance; } static saveData(String key, T value) async { SharedPreferences prefs = await SharedPreferences.getInstance(); switch (T) { case String: prefs.setString(key, value as String); break; case int: prefs.setInt(key, value as int); break; case bool: prefs.setBool(key, value as bool); break; case double: prefs.setDouble(key, value as double); break; } } static Future getData(String key) async { SharedPreferences prefs = await SharedPreferences.getInstance(); T? res; switch (T) { case String: res = prefs.getString(key) as T; break; case int: res = prefs.getInt(key) as T; break; case bool: res = prefs.getBool(key) as T; break; case double: res = prefs.getDouble(key) as T; break; } return res; } Future setBool(String tag, bool isFirst) async { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); return sharedPreferences.setBool(tag, isFirst); } Future setString(String tag, String data) async { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); return sharedPreferences.setString(tag, data); } Future setMap(String tag, Map? data) async { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); return sharedPreferences.setString(tag, jsonEncode(data)); } Future setList(String tag, List? data) async { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); return sharedPreferences.setString(tag, jsonEncode(data)); } Future getBool(String tag) async { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); return sharedPreferences.getBool(tag); } Future getString(String tag) async { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); return sharedPreferences.getString(tag); } Future> getMap(String tag) async { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); return jsonDecode(sharedPreferences.getString(tag) ?? '{}'); } Future> getList(String tag) async { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); return jsonDecode(sharedPreferences.getString(tag) ?? '[]'); } Future clear() async { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); return sharedPreferences.clear(); } }