shared_preferences缓存
封装
import 'dart:convert'; import 'package:shared_preferences/shared_preferences.dart'; class JSpUtil {
JSpUtil._internal(); // 私有的构造方法,防止外部实例化 factory JSpUtil() => _instance; // 工厂方法,返回 JSpUtil 唯一实例 static late final JSpUtil _instance = JSpUtil._internal(); // JSpUtil 唯一实例 static late SharedPreferences _preferences; // SharedPreferences 对象 static Future<JSpUtil> getInstance() async {
_preferences = await SharedPreferences.getInstance(); // 获取 SharedPreferences 实例
return _instance;
} /// 根据key存储int类型
static Future<bool> setInt(String key, int value) {
return _preferences.setInt(key, value); // 使用 SharedPreferences 存储 int 类型的数据
} /// 根据key获取int类型
static int? getInt(String key, {int defaultValue = 0}) {
return _preferences.getInt(key) ?? defaultValue; // 使用 SharedPreferences 获取 int 类型数据,如果不存在则返回默认值
} /// 根据key存储double类型
static Future<bool> setDouble(String key, double value) {
return _preferences.setDouble(key, value); // 使用 SharedPreferences 存储 double 类型的数据
} /// 根据key获取double类型
static double? getDouble(String key, {double defaultValue = 0.0}) {
return _preferences.getDouble(key) ?? defaultValue; // 使用 SharedPreferences 获取 double 类型数据,如果不存在则返回默认值
} /// 根据key存储字符串类型
static Future<bool> setString(String key, String value) {
return _preferences.setString(key, value); // 使用 SharedPreferences 存储字符串类型的数据
} /// 根据key获取字符串类型
static String? getString(String key, {String defaultValue = ""}) {
return _preferences.getString(key) ?? defaultValue; // 使用 SharedPreferences 获取字符串类型数据,如果不存在则返回默认值
} /// 根据key存储布尔类型
static Future<bool> setBool(String key, bool value) {
return _preferences.setBool(key, value); // 使用 SharedPreferences 存储布尔类型的数据
} /// 根据key获取布尔类型
static bool? getBool(String key, {bool defaultValue = false}) {
return _preferences.getBool(key) ?? defaultValue; // 使用 SharedPreferences 获取布尔类型数据,如果不存在则返回默认值
} /// 根据key存储字符串类型数组
static Future<bool> setStringList(String key, List<String> value) {
return _preferences.setStringList(key, value); // 使用 SharedPreferences 存储字符串类型数组
} /// 根据key获取字符串类型数组
static List<String> getStringList(String key,
{List<String> defaultValue = const []}) {
return _preferences.getStringList(key) ?? defaultValue; // 使用 SharedPreferences 获取字符串类型数组,如果不存在则返回默认值
} /// 根据key存储Map类型
static Future<bool> setMap(String key, Map value) {
return _preferences.setString(key, json.encode(value)); // 使用 SharedPreferences 存储 Map 类型的数据,将 Map 转为 json 字符串存储
} /// 根据key获取Map类型
static Map getMap(String key) {
String jsonStr = _preferences.getString(key) ?? ""; // 使用 SharedPreferences 获取存储的 json 字符串
return jsonStr.isEmpty ? Map : json.decode(jsonStr); // 将 json 字符串解码为 Map 对象,如果 json 为空则返回空 Map 对象
}
}
shared_preferences缓存的更多相关文章
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- 哪种缓存效果高?开源一个简单的缓存组件j2cache
背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...
- ASP.NET Core 中间件之压缩、缓存
前言 今天给大家介绍一下在 ASP.NET Core 日常开发中用的比较多的两个中间件,它们都是出自于微软的 ASP.NET 团队,他们分别是 Microsoft.AspNetCore.Respons ...
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...
- [Java 缓存] Java Cache之 DCache的简单应用.
前言 上次总结了下本地缓存Guava Cache的简单应用, 这次来继续说下项目中使用的DCache的简单使用. 这里分为几部分进行总结, 1)DCache介绍; 2)DCache配置及使用; 3)使 ...
- [原创]mybatis中整合ehcache缓存框架的使用
mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...
- 探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存)
其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...
- 深究标准IO的缓存
前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了 ...
- 缓存工厂之Redis缓存
这几天没有按照计划分享技术博文,主要是去医院了,这里一想到在医院经历的种种,我真的有话要说:医院里的医务人员曾经被吹捧为美丽+和蔼+可亲的天使,在经受5天左右相互接触后不得不让感慨:遇见的有些人员在挂 ...
- .net 分布式架构之分布式缓存中间件
开源git地址: http://git.oschina.net/chejiangyi/XXF.BaseService.DistributedCache 分布式缓存中间件 方便实现缓存的分布式,集群, ...
随机推荐
- Windows11如何设置经典的右键菜单
使用Windows11几个月了,解决了我的电脑经常性彻底死机.蓝屏的问题,系统也流畅.易用了好多.唯一不能忍受的是右键菜单,经常需要再点一次才能找到自己想要的选项,今天网搜了下解决办法,特记录于此. ...
- Script:10g中显示Active Session Count by Wait Class
摘自: http://www.askmaclean.com/archives/script-10g-show-active-session-count-wait-class.html SELECT T ...
- CF1401C
题目简化和分析: 交换数组使其变为升序,满足交互的两数 \(a_i\) 与 \(a_j\),$ \min{a_i(1\le i\le n)}|\gcd(a_i,a_j)$ . 简单思维题,Div.2 ...
- 比赛总结:Japan Registry Services (JPRS) Programming Contest 2023 (AtCoder Beginner Contest 324)
比赛:Japan Registry Services (JPRS) Programming Contest 2023 (AtCoder Beginner Contest 324) A-same 1.常 ...
- Telegram 正式引入国产小程序技术
Telegram 宣布为其开发者提供了一项"能够在 App 中运行迷你应用"的新功能( 迷你应用即 Mini App,下文中以"小程序"代替). 在一篇博客文章 ...
- 20.1 OpenSSL 字符BASE64压缩算法
OpenSSL 是一种开源的加密库,提供了一组用于加密和解密数据.验证数字证书以及实现各种安全协议的函数和工具.它可以用于创建和管理公钥和私钥.数字证书和其他安全凭据,还支持SSL/TLS.SSH.S ...
- Cookie入门实例
cookie介绍:Cookie通常用于网站记录客户的某些信息,比如客户的用户名.客户的喜好(比如,上一次浏览的宝贝)等.一旦用户下次登录,网站可以获取到客户相关的信息,根据这些客户信息,网站可以对客户 ...
- SMC
记一次入门反调试技术 找到关键函数,先分析F5伪代码,发现了virtualprotect函数,联想到了SMC代码保护技术 但是到了后面分析发现分析不下去了,然后找了wp发现是代码反调试技术 然后细细看 ...
- Codeforces Round #706 (Div. 2) A-D题解
写在前边 链接:Codeforces Round #706 (Div. 2) \(A,B,C,D\),这场有点简单,不过由于A写炸了后边题连看都没看就溜了,就从上大分变成了掉大分 A. Split i ...
- Windows 搭建 Flutter 开发环境
安装 去官网地址下载 Flutter SDK. 下载地址:https://flutter.dev/docs/development/tools/sdk/releases 将安装包解压到你想安装 Flu ...