Flutter--shared_preferences缓存封装

Flutter开发中缓存数据,我们可以使用官方提供的shared_preferences,在实际项目中需要将它封装一层,方便后续替换其他缓存库。

添加依赖:

dependencies:
  shared_preferences: ^2.1.1

封装管理类:

import 'package:shared_preferences/shared_preferences.dart';

/// @author huzhuwei
class UPCache {
    
    
SharedPreferences? _prefs;
static UPCache? _instance;

UPCache.of() {
    
    
  init();
}
UPCache._pre(SharedPreferences prefs) {
    
    
  _prefs = prefs;
}

static UPCache getInstance() {
    
    
  _instance ??= UPCache.of();
  return _instance!;
}

void init() async {
    
    
  _prefs ??= await SharedPreferences.getInstance();
}

static Future<UPCache> preInit() async {
    
    
  if (_instance == null) {
    
    
    var prefs = await SharedPreferences.getInstance();
    _instance = UPCache._pre(prefs);
  }
  return _instance!;
}

void setData<T>(String key, T data) {
    
    
  if (data is String) {
    
    
    _prefs?.setString(key, data);
  } else if (data is double) {
    
    
    _prefs?.setDouble(key, data);
  } else if (data is int) {
    
    
    _prefs?.setInt(key, data);
  } else if (data is bool) {
    
    
    _prefs?.setBool(key, data);
  } else if (data is List<String>) {
    
    
    _prefs?.setStringList(key, data);
  }
}

void remove(String key) {
    
    
  _prefs?.remove(key);
}

T? get<T>(String key) {
    
    
  var value = _prefs?.get(key);
  if (value != null) {
    
    
    return value as T;
  }
  return null;
}
}

使用:

在initState()中,预初始化

  
void initState() {
    
    
  super.initState();
  UPCache.preInit();
}
  void test() {
    
    
  UPCache.getInstance().setData("key1", "hhahahahah");
  UPCache.getInstance().setData("key2", 123);
  UPCache.getInstance().setData("key3", false);
  UPCache.getInstance().setData("key4", 11.1);
  var value1 = UPCache.getInstance().get("key1");
  var value2 = UPCache.getInstance().get("key2");
  var value3 = UPCache.getInstance().get("key3");
  var value4 = UPCache.getInstance().get("key4");
  print('value1:$value1');
  print('value2:$value2');
  print('value3:$value3');
  print('value4:$value4');
}

猜你喜欢

转载自blog.csdn.net/Memory_of_the_wind/article/details/130850075