196 lines
4.5 KiB
Dart
196 lines
4.5 KiB
Dart
/// 时间: 2025-03-25
|
||
/// 功能: SharedPreferences存储控制器
|
||
/// 介绍: 使用SharedPreferences实现本地存储功能
|
||
/// 最新变化: 重命名为SharedPreferencesStorageController
|
||
|
||
import 'package:shared_preferences/shared_preferences.dart';
|
||
|
||
/// SharedPreferences存储控制器类
|
||
/// 负责管理本地键值对存储,基于SharedPreferences实现
|
||
class SharedPreferencesStorageController {
|
||
static SharedPreferences? _prefs;
|
||
|
||
/// 初始化SharedPreferences
|
||
static Future<void> init() async {
|
||
try {
|
||
_prefs = await SharedPreferences.getInstance();
|
||
} catch (e) {
|
||
throw e;
|
||
}
|
||
}
|
||
|
||
/// 获取SharedPreferences实例
|
||
static Future<SharedPreferences> _getInstance() async {
|
||
if (_prefs == null) {
|
||
await init();
|
||
}
|
||
return _prefs!;
|
||
}
|
||
|
||
/// 存储字符串值
|
||
static Future<void> setString(String key, String value) async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
await instance.setString(key, value);
|
||
} catch (e) {
|
||
throw e;
|
||
}
|
||
}
|
||
|
||
/// 获取字符串值
|
||
static Future<String> getString(
|
||
String key, {
|
||
String defaultValue = '',
|
||
}) async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
final value = instance.getString(key) ?? defaultValue;
|
||
return value;
|
||
} catch (e) {
|
||
return defaultValue;
|
||
}
|
||
}
|
||
|
||
/// 存储整数值
|
||
static Future<void> setInt(String key, int value) async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
await instance.setInt(key, value);
|
||
} catch (e) {
|
||
throw e;
|
||
}
|
||
}
|
||
|
||
/// 获取整数值
|
||
static Future<int> getInt(String key, {int defaultValue = 0}) async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
final value = instance.getInt(key) ?? defaultValue;
|
||
return value;
|
||
} catch (e) {
|
||
return defaultValue;
|
||
}
|
||
}
|
||
|
||
/// 存储布尔值
|
||
static Future<void> setBool(String key, bool value) async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
await instance.setBool(key, value);
|
||
} catch (e) {
|
||
throw e;
|
||
}
|
||
}
|
||
|
||
/// 获取布尔值
|
||
static Future<bool> getBool(String key, {bool defaultValue = false}) async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
final value = instance.getBool(key) ?? defaultValue;
|
||
return value;
|
||
} catch (e) {
|
||
return defaultValue;
|
||
}
|
||
}
|
||
|
||
/// 存储双精度值
|
||
static Future<void> setDouble(String key, double value) async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
await instance.setDouble(key, value);
|
||
} catch (e) {
|
||
throw e;
|
||
}
|
||
}
|
||
|
||
/// 获取双精度值
|
||
static Future<double> getDouble(
|
||
String key, {
|
||
double defaultValue = 0.0,
|
||
}) async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
final value = instance.getDouble(key) ?? defaultValue;
|
||
return value;
|
||
} catch (e) {
|
||
return defaultValue;
|
||
}
|
||
}
|
||
|
||
/// 存储字符串列表
|
||
static Future<void> setStringList(String key, List<String> value) async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
await instance.setStringList(key, value);
|
||
} catch (e) {
|
||
throw e;
|
||
}
|
||
}
|
||
|
||
/// 获取字符串列表
|
||
static Future<List<String>> getStringList(
|
||
String key, {
|
||
List<String>? defaultValue,
|
||
}) async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
final value = instance.getStringList(key) ?? defaultValue ?? [];
|
||
return value;
|
||
} catch (e) {
|
||
return defaultValue ?? [];
|
||
}
|
||
}
|
||
|
||
/// 移除指定键的值
|
||
static Future<void> remove(String key) async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
await instance.remove(key);
|
||
} catch (e) {
|
||
throw e;
|
||
}
|
||
}
|
||
|
||
/// 清空所有存储
|
||
static Future<void> clear() async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
await instance.clear();
|
||
} catch (e) {
|
||
throw e;
|
||
}
|
||
}
|
||
|
||
/// 获取所有存储的键
|
||
static Future<Set<String>> getKeys() async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
final keys = instance.getKeys();
|
||
return keys;
|
||
} catch (e) {
|
||
return {};
|
||
}
|
||
}
|
||
|
||
/// 检查键是否存在
|
||
static Future<bool> containsKey(String key) async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
final exists = instance.containsKey(key);
|
||
return exists;
|
||
} catch (e) {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/// 重新加载数据
|
||
static Future<void> reload() async {
|
||
try {
|
||
final instance = await _getInstance();
|
||
await instance.reload();
|
||
} catch (e) {
|
||
// 忽略错误
|
||
}
|
||
}
|
||
}
|