Flutter 本地存储 单例工具类

54 阅读1分钟
import 'package:shared_preferences/shared_preferences.dart';

class SharedPreferencesUtil {
  static SharedPreferencesUtil? _instance;
  SharedPreferences? _preferences;

  // 私有构造函数,防止外部实例化
  SharedPreferencesUtil._();

  static Future<SharedPreferencesUtil?> getInstance() async {
    if (_instance == null) {
      _instance = SharedPreferencesUtil._();
      await _instance!._initialize();
    }
    return _instance;
  }

  Future<void> _initialize() async {
    _preferences = await SharedPreferences.getInstance();
  }

  // 存储字符串
  Future<void> setString(String key, String value) async {
    await _preferences?.setString(key, value);
  }

  // 获取字符串
  String? getString(String key) {
    return _preferences?.getString(key);
  }

  // 存储布尔值
  Future<void> setBool(String key, bool value) async {
    await _preferences?.setBool(key, value);
  }

  // 获取布尔值
  bool? getBool(String key) {
    return _preferences?.getBool(key);
  }

  // 存储整数
  Future<void> setInt(String key, int value) async {
    await _preferences?.setInt(key, value);
  }

  // 获取整数
  int? getInt(String key) {
    return _preferences?.getInt(key);
  }

  // 存储字符串列表
  Future<void> setStringList(String key, List<String> value) async {
    await _preferences?.setStringList(key, value);
  }

  // 获取字符串列表
  List<String>? getStringList(String key) {
    return _preferences?.getStringList(key);
  }

  // 清除特定键的数据
  Future<void> remove(String key) async {
    await _preferences?.remove(key);
  }

  // 清除所有数据
  Future<void> clear() async {
    await _preferences?.clear();
  }
}