SharedPreferencesUtil.dart 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import 'dart:convert';
  2. import 'package:shared_preferences/shared_preferences.dart';
  3. class SharedPreferencesUtil {
  4. // 单例对象
  5. static final SharedPreferencesUtil _singleton = SharedPreferencesUtil._internal();
  6. // 私有构造函数
  7. SharedPreferencesUtil._internal();
  8. // 工厂构造函数返回单例对象
  9. factory SharedPreferencesUtil() => _singleton;
  10. // 获取 SharedPreferences 实例
  11. Future<SharedPreferences> get _instance async => await SharedPreferences.getInstance();
  12. // 存储字符串
  13. Future<void> setString(String key, String value) async {
  14. final prefs = await _instance;
  15. prefs.setString(key, value);
  16. }
  17. // 读取字符串
  18. Future<String?> getString(String key) async {
  19. final prefs = await _instance;
  20. return prefs.getString(key);
  21. }
  22. // 存储JSON数组
  23. Future<void> setJsonList(String key, List<Map<String, dynamic>> jsonList) async {
  24. final prefs = await _instance;
  25. final jsonString = jsonEncode(jsonList);
  26. prefs.setString(key, jsonString);
  27. }
  28. // 读取JSON数组
  29. Future<List<Map<String, dynamic>>?> getJsonList(String key) async {
  30. final prefs = await _instance;
  31. final jsonString = prefs.getString(key);
  32. return jsonString != null ? List<Map<String, dynamic>>.from(jsonDecode(jsonString)) : null;
  33. }
  34. // 存储可以转化为 JSON 的对象
  35. Future<void> setObject(String key, Map<String, dynamic> jsonValue) async {
  36. final prefs = await _instance;
  37. final jsonString = jsonEncode(jsonValue);
  38. prefs.setString(key, jsonString);
  39. }
  40. // 读取 JSON 对象,并返回 Map<String, dynamic>
  41. Future<Map<String, dynamic>?> getObject(String key) async {
  42. final prefs = await _instance;
  43. final jsonString = prefs.getString(key);
  44. return jsonString != null ? jsonDecode(jsonString) as Map<String, dynamic> : null;
  45. }
  46. // 删除指定键的数据
  47. Future<void> delete(String key) async {
  48. final prefs = await _instance;
  49. prefs.remove(key);
  50. }
  51. // 删除所有数据
  52. Future<void> deleteAll() async {
  53. final prefs = await _instance;
  54. prefs.clear();
  55. }
  56. }