封装

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缓存的更多相关文章

  1. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  2. 哪种缓存效果高?开源一个简单的缓存组件j2cache

    背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...

  3. ASP.NET Core 中间件之压缩、缓存

    前言 今天给大家介绍一下在 ASP.NET Core 日常开发中用的比较多的两个中间件,它们都是出自于微软的 ASP.NET 团队,他们分别是 Microsoft.AspNetCore.Respons ...

  4. ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

    背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...

  5. [Java 缓存] Java Cache之 DCache的简单应用.

    前言 上次总结了下本地缓存Guava Cache的简单应用, 这次来继续说下项目中使用的DCache的简单使用. 这里分为几部分进行总结, 1)DCache介绍; 2)DCache配置及使用; 3)使 ...

  6. [原创]mybatis中整合ehcache缓存框架的使用

    mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...

  7. 探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存)

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  8. 深究标准IO的缓存

    前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了 ...

  9. 缓存工厂之Redis缓存

    这几天没有按照计划分享技术博文,主要是去医院了,这里一想到在医院经历的种种,我真的有话要说:医院里的医务人员曾经被吹捧为美丽+和蔼+可亲的天使,在经受5天左右相互接触后不得不让感慨:遇见的有些人员在挂 ...

  10. .net 分布式架构之分布式缓存中间件

    开源git地址: http://git.oschina.net/chejiangyi/XXF.BaseService.DistributedCache 分布式缓存中间件  方便实现缓存的分布式,集群, ...

随机推荐

  1. C转C++ 个人总结

    # C转C++ 个人总结 1.使用C++的好处 2.using namespace std 3.cin和cout #include<iostream> //必备的头文件 using nam ...

  2. HarmonyOS原生分析能力,即开即用助力精细化运营

    数据分析产品对开发者的价值呈现在两个层面,第一个是产品的层面,可以通过数据去洞察用户的行为,从而找到产品的优化点.另外一个就是运营层面,可以基于数据去驱动,来实现私域和公域的精细化运营. 在鸿蒙生态上 ...

  3. CF223B Two Strings 题解

    题目链接 题目分析 题目很短,只有两句话,可分析的不多,似乎难以入手,我们不妨换一个思路转化一下题意,改为:是否对于 \(s\) 中的每一个字符,总有一个等于 \(t\) 的 \(s\) 的子序列覆盖 ...

  4. tailwindcss 选型,以及vue配置使用

    一.为什么选择tailwindcss? Tailwind CSS 是一个受欢迎的.功能丰富的CSS框架,它与传统的CSS框架(如Bootstrap)有些不同.以下是一些人们通常对于Tailwind C ...

  5. html5学习内容-6(flex)

    弹性布局–flex (一)视口单位主要包括以下4个: vw:1vw等于视口宽度的1% vh:1vh等于视口高度的1% vmin:选取vm和vh中最小的那个 vmax:选取vm和vh中最大的那个 常用于 ...

  6. Safepoints: Meaning, Side Effects and Overheads(译文)

    Safepoints: Meaning, Side Effects and Overheads (安全点:含义.副作用和开销) 去年,我一直在进行有关profiling以及JVM运行时/执行的一些讨论 ...

  7. CSP 2023 游只因

    CSP \(2023\) 游只因 前面不写太多. Day \(-\frac{114514}{191}\) 雅礼(HN 四大名校)集训. Day 1:考试,讲题,改题. Day 2:考试,讲题,改题. ...

  8. 浅谈斜率优化DP

    前言 考试 T2 出题人放了个树上斜率优化 DP,直接被同校 OIER 吊起来锤. 离 NOIP 还有不到一周,赶紧学一点. 引入 斜率 斜率,数学.几何学名词,是表示一条直线(或曲线的切线)关于(横 ...

  9. 免费领取Python学习资料

    话不多说,直接上Python学习资料 QQ·群: 894692354(不单独一一发了,要的人太多,实在忙不过来)

  10. .net core下优秀的日志框架使用解析,附源代码

    在 .NET Core 中,日志是一个非常重要的组件,它可以帮助我们记录应用程序的运行情况,以便在出现问题时进行排查.在本文中,我们将介绍五个优秀的 .NET Core 日志框架,它们分别是 Seri ...