Flutter 中常用的缓存数据方式

发布时间 2023-12-27 09:27:13作者: 鲤斌
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: