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 中常用的缓存数据方式的更多相关文章

  1. iOS五种本地缓存数据方式

    iOS五种本地缓存数据方式   iOS本地缓存数据方式有五种:前言 1.直接写文件方式:可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据 ...

  2. 在NodeJS中使用Redis缓存数据

    Redis数据库采用极简的设计思想,最新版的源码包还不到2Mb.其在使用上也有别于一般的数据库. node_redis redis驱动程序多使用 node_redis 此模块可搭载官方的 hiredi ...

  3. IE浏览器中ajax使用缓存数据的问题

    今天做了一个小功能:点击鼠标实时更新系统时间,采用ajax,过程很顺利,没遇到啥差错,谷歌,火狐,欧鹏一律通过,怀着忐忑的心情点开了IE8,果然,IE要对得起前端杀手的称号:更新不了时间. 查了一下这 ...

  4. J2EE开发中常用的缓存策略

    一.什么是缓存1.Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问2.凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之 ...

  5. java中使用Ehcache缓存数据

    知识点:在java项目中,使用ehcache缓存数据 参考博客:http://www.cnblogs.com/jingmoxukong/p/5975994.html ()概述 Ehcache是一个纯J ...

  6. flutter系列之:flutter中常用的container layout详解

    目录 简介 Container的使用 旋转Container Container中的BoxConstraints 总结 简介 在上一篇文章中,我们列举了flutter中的所有layout类,并且详细介 ...

  7. 走进AngularJs(二) ng模板中常用指令的使用方式

    通过使用模板,我们可以把model和controller中的数据组装起来呈现给浏览器,还可以通过数据绑定,实时更新视图,让我们的页面变成动态的.ng的模板真是让我爱不释手.学习ng道路还很漫长,从模板 ...

  8. Java中常用加减密方式

    1.加密概述: 加密就是是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使以获得了加密的信息,但因不知解密方式,仍无法了解信息的内容.大体上又分为双向加密和单向加密. 2.单项加密 2.1.概 ...

  9. iOS开发中常用到的加密方式

    1 base64 1.1 简介 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24位数据,再把这24位数据 ...

  10. flutter系列之:flutter中常用的Stack layout详解

    [toc] 简介 对于现代APP的应用来说,为了更加美观,通常会需要用到不同图像的堆叠效果,比如在一个APP用户背景头像上面添加一个按钮,表示可以修改用户信息等. 要实现这样的效果,我们需要在一个Im ...

随机推荐

  1. 低代码平台探讨-MetaStore元数据缓存

    背景及需求 之前提到我们模型驱动的实现选择的是解释型,需要模型的元数据信息,在接到请求后动态处理逻辑. 此外,应用的通用能力中还包括:页面dsl查询,菜单查询等. 而且后期加入触发器,用户自定义api ...

  2. sqlserver在设计表结构时,如何选择字段的数据类型

    在设计表结构时,选择适当的字段数据类型是非常重要的,它会直接影响数据库的性能.存储空间和数据的完整性.以下是在 SQL Server 中选择字段数据类型时的一些建议和理由: 1. 整数类型:在 SQL ...

  3. calico网络异常,不健康

    解决calico/node is not ready: BIRD is not ready: BGP not established withxxx calico有一个没有ready,查了一下是没有发 ...

  4. LVS+keepalived结合

    LVS+Keepalived实现高可用负载均衡(web集群) LVS+Keepalived架构图:   测试环境: 名称 操作系统 IP地址 LVS-MASTER Centos7.x 192.168. ...

  5. JVM SandBox 的技术原理与应用分析

    https://www.infoq.cn/article/tsy4lgjvsfweuxebw*gp https://blog.csdn.net/qq_40378034/article/details/ ...

  6. Pandas 分组聚合操作详解

    Pandas 是 Python 中用于数据分析的重要工具,它提供了丰富的数据操作方法.在数据分析过程中,经常需要对数据进行分组聚合操作.本文将介绍 Pandas 中的数据分组方法以及不同的聚合操作,并 ...

  7. (Good topic)快慢指针:链表的中间结点 (3.23leetcode每日打卡)

    给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点.   示例 1: 输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3, ...

  8. 潜在威胁信息模型(PTIM)-Potential threats Information Modeling

    前言 这只是一位学识浅薄博主的一个突然想法,还望各位专业领域的专家教授轻怼 潜在威胁信息模型 目前的想法是通过全城摄像头建立城市的潜在威胁信息模型,这个潜在威胁可以包括:天气灾害(冰雹.雾霾能见度等) ...

  9. python数值列表之range()和list()

    range() 学习了for循环后,显示数字当然也可以很轻松啦,这个时候我们就可以用到range()函数 for list_2 in range(1, 5): print(list_2) range( ...

  10. 一个NET8 AOT编译的辅助项目,让你的任何可执行应用快速部署为服务

    不知道大家有没有和小编一样,很多时候想将自己的一些应用转为服务运行,比如一些控制台应用或者.NET Core应用,但是又不想重新编码,把他们转为服务,本文将给大家提供些我使用过的方法,并提供一个基于N ...