Flutter 中常用的缓存数据方式
SharedPreferences:
优点:使用简单,轻量级,适用于少量数据的缓存;缺点:不适合存储大型、结构化、复杂的数据;
SQLite:
优点:可以存储大量、结构化、复杂的数据,支持复杂的数据查询操作;缺点:比较复杂,需要学习 SQL 和数据库操作;
Hive:
优点:快速、可扩展,性能较好,适用于存储大量数据;缺点:不支持复杂的数据关系和查询操作;
Filesystem:
优点:可用于存储大文件或二进制数据,如图片和音频文件;缺点:需要自己处理文件读写操作;
Memory Cache:
优点:速度快,比较灵活,适用于需要快速访问的数据;缺点:可存储的数据大小会受到内存大小的影响。
如果场景比较简单,数据量比较小,则应该选择 SharedPreferences;如果数据量比较大且需要具有查询和管理功能,则 SQLite 和 Hive 两种方式都可以考虑使用;如果需要存储大数量的文件(如图片和音频文件),则应该选择 Filesystem。
如果需要快速访问的数据,则可以使用 Memory Cache,在内存中建立一个缓存,这样可以提高缓存访问的速度。
flutter_secure_storage:
优点:自动清除缓存:当应用程序关闭或卸载时,flutter_secure_storage 会自动清除存储的数据,不需要开发人员手动处理;因此数据是加密的,即使设备被破解或者遭受恶意攻击,也很难解密数据;
SharedPreferences:
//1、导入SharedPreferences依赖库 dependencies:
shared_preferences: ^2.0.6 //2、实例化SharedPreferences对象
import 'package:shared_preferences/shared_preferences.dart'; SharedPreferences prefs = await SharedPreferences.getInstance(); //3、存储数据
// 存储字符串
prefs.setString(key, value); // 存储布尔值
prefs.setBool(key, value); // 存储整数
prefs.setInt(key, value); // 存储双精度浮点数
prefs.setDouble(key, value); // 存储字符串列表
prefs.setStringList(key, value); //4、获取数据 // 获取字符串
String stringValue = prefs.getString(key); // 获取布尔值
bool boolValue = prefs.getBool(key); // 获取整数
int intValue = prefs.getInt(key); // 获取双精度浮点数
double doubleValue = prefs.getDouble(key); // 获取字符串列表
List<String> stringListValue = prefs.getStringList(key); //5、删除数据 // 删除指定键的数据
prefs.remove(key); // 删除所有数据
prefs.clear();
SQLite:
Hive:
Filesystem:
Memory Cache:
Flutter 中常用的缓存数据方式的更多相关文章
- iOS五种本地缓存数据方式
iOS五种本地缓存数据方式 iOS本地缓存数据方式有五种:前言 1.直接写文件方式:可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据 ...
- 在NodeJS中使用Redis缓存数据
Redis数据库采用极简的设计思想,最新版的源码包还不到2Mb.其在使用上也有别于一般的数据库. node_redis redis驱动程序多使用 node_redis 此模块可搭载官方的 hiredi ...
- IE浏览器中ajax使用缓存数据的问题
今天做了一个小功能:点击鼠标实时更新系统时间,采用ajax,过程很顺利,没遇到啥差错,谷歌,火狐,欧鹏一律通过,怀着忐忑的心情点开了IE8,果然,IE要对得起前端杀手的称号:更新不了时间. 查了一下这 ...
- J2EE开发中常用的缓存策略
一.什么是缓存1.Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问2.凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之 ...
- java中使用Ehcache缓存数据
知识点:在java项目中,使用ehcache缓存数据 参考博客:http://www.cnblogs.com/jingmoxukong/p/5975994.html ()概述 Ehcache是一个纯J ...
- flutter系列之:flutter中常用的container layout详解
目录 简介 Container的使用 旋转Container Container中的BoxConstraints 总结 简介 在上一篇文章中,我们列举了flutter中的所有layout类,并且详细介 ...
- 走进AngularJs(二) ng模板中常用指令的使用方式
通过使用模板,我们可以把model和controller中的数据组装起来呈现给浏览器,还可以通过数据绑定,实时更新视图,让我们的页面变成动态的.ng的模板真是让我爱不释手.学习ng道路还很漫长,从模板 ...
- Java中常用加减密方式
1.加密概述: 加密就是是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使以获得了加密的信息,但因不知解密方式,仍无法了解信息的内容.大体上又分为双向加密和单向加密. 2.单项加密 2.1.概 ...
- iOS开发中常用到的加密方式
1 base64 1.1 简介 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24位数据,再把这24位数据 ...
- flutter系列之:flutter中常用的Stack layout详解
[toc] 简介 对于现代APP的应用来说,为了更加美观,通常会需要用到不同图像的堆叠效果,比如在一个APP用户背景头像上面添加一个按钮,表示可以修改用户信息等. 要实现这样的效果,我们需要在一个Im ...
随机推荐
- 成本阶问题:财务模块axcr004合计金额检核表第18行合计金额与明细差异过大问题处理?
财务模块axcr004合计金额检核表第18行合计金额与明细差异过大问题处理? 可能原因:生产开立工单时元件未建在生产料件BOM明细中,导致成本阶没有算到,需要手动更改成本阶. 公式: 处理办法:修改成 ...
- 素数是个什么东西 prime number
/** * ********************************************************************* * 只有1和它本身两个正因数的自然数,叫质数 ...
- python接口自动化 之excel读取测试数据
一.当你拥有一个excel版的接口用例 excel中有用例名称.url.请求方式和请求参数 二.获取excel的Url.请求方式和请求参数 # 单独获取某个单元格的值,第二行第二列# 第二行数据 ro ...
- 我试图扯掉这条 SQL 的底裤。
你好呀,我是歪歪. 这次带大家盘一个我觉得有点意思的东西,也是之前写<一个烂分页,踩了三个坑!>这篇文章时,遇到的一个神奇的现象,但是当时忙着做文章搞定这个主线任务,就没有去深究这个支线任 ...
- Redis的速度不够用?为什么你应该考虑使用 KeyDB,一个更快、更强大、更灵活的开源数据库
你是否正在使用 Redis 作为您的数据结构存储,享受它的高性能.高可用的特性?如果是这样,那么你可能会对 KeyDB 感兴趣. 什么是 KeyDB? KeyDB 一个由 Snap 提供支持.专为扩展 ...
- K8s - 安装部署Kafka、Zookeeper集群教程(支持从K8s外部访问)
本文演示如何在K8s集群下部署Kafka集群,并且搭建后除了可以K8s内部访问Kafka服务,也支持从K8s集群外部访问Kafka服务.服务的集群部署通常有两种方式:一种是 StatefulSet,另 ...
- 后缀自动机 (SAM) 的构造及应用
cnblogs 怎么又炸了. 为什么又可爱又强的 xxn 去年 9 月就会的科技樱雪喵现在还不会呢 /kel. 感觉 SAM 的教程已经被前人写烂了啊.那就写点个人学习过程中对 SAM 的理解. 参考 ...
- AcWing 368. 银河
原本是一个差分约束的问题,但是由于数据过大可能导致\(spfa\)被卡,而由于这道题的边权只有\(0,1\)两种,比较特殊,所以使用\(tarjan\)求连通分量,缩点,递推的方式也能完成,时间复杂度 ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-32-JavaScript的调用执行-下篇
1.简介 在实际工作中,我们需要对处理的元素进行高亮显示,或者有时候为了看清楚操作过程和步骤我们需要跟踪鼠标点击了哪些元素需要标记出来.虽然很少遇到,但是为了以后大家可以参考或者提供一种思路,今天宏哥 ...
- python之继承的方法重写
目录 普通方法 方法重写super().xxx() 我们在python之继承及其实现方法中已经学会了打印子类在父类继承的属性 那么我们怎么打印出子类中特有的属性呢 普通方法 我们当然可以在子类中添加新 ...