原文 https://medium.com/@romaingreaume/implementing-a-cache-strategy-in-your-flutter-app-5db3e316e7c9
在移动应用程序中,缓存管理是一件非常重要的事情。
在本文中,我将告诉您如何在我的公司 Beapp 中设置策略缓存。
如果你读了这篇文章,我想你知道缓存是什么,但是以防万一..。
缓存基本上是将数据存储在设备的存储器中。
一张图片胜过千言万语:
Cache Strategy Scheme
缓存策略计划
如您所见,缓存的主要用途是始终尝试向用户显示数据。
关于敏感数据,出于以下原因,我将用户缓存与网络缓存分离:
因此,将这些策略分离开来是一种很好的做法,即使它们可以被合并。
现在我们了解了什么是缓存,让我们深入研究代码吧!
文件树如下所示:
-- lib
----- core
------- cache
--------- storage
--------- strategy
在子文件夹存储中,我们创建了一个文件 Storage.dart,其中包含一个抽象类 Storage
这个类是一个“契约 contrac”,我们在其中声明操作数据的方法。
abstract class Storage {
Future<void> write(String key, String value);
Future<String?> read(String key);
Future<void> delete(String key);
Future<int> count({
String? prefix});
Future<void> clear({
String? prefix});
}
正如我所说,我们将通过我们的应用程序操纵它们,但为此,我们需要在设备中存储它们的方法。
我们使用 Hive 包,它是一个基于键/值的存储解决方案。
总而言之,Hive 在设备的存储中创建了一个文件夹,您可以在其中存储一个 hiveBox,其中包含 key: value 数据。
我们可以很容易地通过它的名字进入这个盒子。
现在我们可以从 Storage 抽象类中实现这些方法。
class CacheStorage implements Storage {
static const _hiveBoxName = "cache";
CacheStorage() {
Hive.initFlutter() ;
}
@override
Future<void> clear({
String? prefix}) async {
final box = await Hive.openBox(_hiveBoxName);
if (prefix ==