Flutter--shared_preferences缓存封装

该文介绍了在Flutter开发中如何利用官方库shared_preferences进行数据缓存,并提供了一个简单的缓存管理类UPCache的封装示例,便于后期替换其他缓存库。UPCache类包含了设置和获取不同类型数据的方法,以及预初始化的静态方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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');
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值