| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- import 'dart:convert';
- import 'package:shared_preferences/shared_preferences.dart';
- import 'package:sino_med_cloud/core/constants/app_constants.dart';
- /// 本地存储管理类
- class LocalStorage {
- static SharedPreferences? _prefs;
- /// 初始化本地存储
- static Future<void> init() async {
- _prefs ??= await SharedPreferences.getInstance();
- }
- /// 获取 SharedPreferences 实例
- static SharedPreferences get prefs {
- if (_prefs == null) {
- throw Exception('LocalStorage not initialized. Call LocalStorage.init() first.');
- }
- return _prefs!;
- }
- // ==================== String 操作 ====================
- /// 保存字符串
- static Future<bool> setString(String key, String value) async {
- return await prefs.setString(key, value);
- }
- /// 获取字符串
- static String? getString(String key, {String? defaultValue}) {
- return prefs.getString(key) ?? defaultValue;
- }
- // ==================== Int 操作 ====================
- /// 保存整数
- static Future<bool> setInt(String key, int value) async {
- return await prefs.setInt(key, value);
- }
- /// 获取整数
- static int? getInt(String key, {int? defaultValue}) {
- return prefs.getInt(key) ?? defaultValue;
- }
- // ==================== Double 操作 ====================
- /// 保存浮点数
- static Future<bool> setDouble(String key, double value) async {
- return await prefs.setDouble(key, value);
- }
- /// 获取浮点数
- static double? getDouble(String key, {double? defaultValue}) {
- return prefs.getDouble(key) ?? defaultValue;
- }
- // ==================== Bool 操作 ====================
- /// 保存布尔值
- static Future<bool> setBool(String key, bool value) async {
- return await prefs.setBool(key, value);
- }
- /// 获取布尔值
- static bool? getBool(String key, {bool? defaultValue}) {
- return prefs.getBool(key) ?? defaultValue;
- }
- // ==================== StringList 操作 ====================
- /// 保存字符串列表
- static Future<bool> setStringList(String key, List<String> value) async {
- return await prefs.setStringList(key, value);
- }
- /// 获取字符串列表
- static List<String>? getStringList(String key) {
- return prefs.getStringList(key);
- }
- // ==================== Map 操作 ====================
- /// 保存键值对(Map)
- ///
- /// [key] 存储的键
- /// [value] 要保存的 Map 对象
- ///
- /// 返回保存是否成功
- ///
- /// 示例:
- /// ```dart
- /// await LocalStorage.setMap('user', {'name': 'John', 'age': 30});
- /// ```
- static Future<bool> setMap(String key, Map<String, dynamic> value) async {
- try {
- // 将 Map 转换为 JSON 字符串保存
- final jsonString = jsonEncode(value);
- return await prefs.setString(key, jsonString);
- } catch (e) {
- // 如果转换失败,返回 false
- return false;
- }
- }
- /// 获取键值对(Map)
- ///
- /// [key] 存储的键
- /// [defaultValue] 默认值(可选)
- ///
- /// 返回 Map 对象,如果不存在或解析失败则返回 null 或默认值
- ///
- /// 示例:
- /// ```dart
- /// final user = LocalStorage.getMap('user');
- /// // 返回:{'name': 'John', 'age': 30}
- /// ```
- static Map<String, dynamic>? getMap(String key, {Map<String, dynamic>? defaultValue}) {
- try {
- final jsonString = prefs.getString(key);
- if (jsonString == null) {
- return defaultValue;
- }
- // 将 JSON 字符串解析为 Map
- final decoded = jsonDecode(jsonString) as Map<String, dynamic>;
- return decoded;
- } catch (e) {
- // 如果解析失败,返回默认值或 null
- return defaultValue;
- }
- }
- // ==================== 通用操作 ====================
- /// 删除指定 key
- static Future<bool> remove(String key) async {
- return await prefs.remove(key);
- }
- /// 清空所有数据
- static Future<bool> clear() async {
- return await prefs.clear();
- }
- /// 检查 key 是否存在
- static bool containsKey(String key) {
- return prefs.containsKey(key);
- }
- /// 获取所有 key
- static Set<String> getKeys() {
- return prefs.getKeys();
- }
- // ==================== 常用业务方法 ====================
- /// 保存 Token
- static Future<bool> saveToken(String token) async {
- return await setString(AppConstants.keyToken, token);
- }
- /// 获取 Token
- static String? getToken() {
- return getString(AppConstants.keyToken);
- }
- /// 删除 Token
- static Future<bool> removeToken() async {
- return await remove(AppConstants.keyToken);
- }
- /// 保存用户信息(JSON 字符串)
- static Future<bool> saveUserInfo(Map<String, dynamic> userInfo) async {
- return await setMap(AppConstants.keyUserInfo, userInfo);
- }
- /// 获取用户信息
- static Map<String, dynamic>? getUserInfo() {
- return getMap(AppConstants.keyUserInfo);
- }
- /// 删除用户信息
- static Future<bool> removeUserInfo() async {
- return await remove(AppConstants.keyUserInfo);
- }
- }
|