关于程序员:基于-Hive-的-Flutter-文档类型存储

29次阅读

共计 2186 个字符,预计需要花费 6 分钟才能阅读完成。

基于 Hive 的 Flutter 文档类型存储

原文 https://medium.com/gytworkz/d…

前言

长久以来,咱们始终应用共享首选项以键对格局在本地存储中存储数据,或者应用 SQLite 在 SQL 数据库中存储数据。

存储本地数据的另一种办法是将其存储为文档格局,相似于应用 Hive 包的 Firebase 云存储。

https://pub.dev/packages/hive

注释

Features 特色

  • 跨平台: 挪动,桌面,浏览器
  • 表演很棒
  • 径简略,弱小,直观的 API
  • 内置了很强的加密
  • 没有本机依赖项

Advantage 劣势

  • 便于存储和检索
  • 比其余存储技术更快更高效

Benchmark 基准

速度比照

Implementation 施行

步骤 1: 在 pubspec.yaml 中增加依赖项

dependencies:
  hive: ^[version]
  hive_flutter: ^[version]

dev_dependencies:
  hive_generator: ^[version]
  build_runner: ^[version]

第二步: 初始化 hive

await Hive.initFlutter();

步骤 3: 创立一个框

提醒: 应用 path_Provider 包获取应用程序的本地目录

  • 盒子是什么?

存储在 Hive 中的所有数据都组织在框中。框能够与 SQL 中的表进行比拟,但它没有构造,能够蕴含任何内容。

对于一个小型应用程序,一个独自的框可能就足够了。对于更高级的问题,框是组织数据的好办法。还能够对盒子进行加密以存储敏感数据。

能够抉择,但倡议!

要晓得盒子能够包容的确切数据,您能够指定盒子的类型

var box = await Hive.openBox<User>('users');

box.add(User());

box.add(5); // Compile time error

Advance Stage 后期阶段

当初是时候创立一个能够存储在蜂箱中的模型了。

步骤 1: 创立 typeAdapter

  • 首先应用解冻正文为数据创立一个模型。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

应用 https://app.quicktype.io 创立具备解冻正文的模型。

sample model class

样本模型类

每个类都必须用具备惟一 typeID 的 @HiveType 进行正文,每个字段都必须用具备惟一 fieldID 的 @HiveField 进行正文。

应用生成器命令创立生成的类。

抖动 Pub 运行 build_runner build ー删除 - 抵触 - 输入

这将创立适配器,您能够应用它们在 main.dart 文件中进行初始化。

adapter initialisation

适配器初始化适配器初始化

一旦您注册了适配器。当初您能够保留在蜂箱中的数据。

步骤 2: 创立 Hive 存储类

Local db class to save the stock model

保留股票模型的本地 db 类

通过创立这个类,您能够轻松地存储和检索来自 hive 框的数据,并在应用程序中应用它。如果你始终关注这个博客到当初,你曾经胜利地把文档存储在蜂箱里了。

Properties 属性

  • 存储数据
var box = Hive.box('myBox');


box.put('name', 'Paul');


box.put('friends', ['Dave', 'Simon', 'Lisa']);


box.put(123, 'test');


box.putAll({'key1': 'value1', 42: 'life'});
  • 检索数据
var box = await Hive.openBox('box');


box.put('key', 'value');

print(box.get('key')); // value


var lazyBox = await Hive.openLazyBox('lazyBox');


var future = lazyBox.put('key', 'value');

print(lazyBox.get('key')); // null


await future;

print(lazyBox.get('key')); // value
  • 删除数据
var box = await Hive.openBox('box');


box.put('key', 'value');

print(box.get('key')); // value


var lazyBox = await Hive.openLazyBox('lazyBox');


var future = lazyBox.put('key', 'value');

print(lazyBox.get('key')); // null


await future;

print(lazyBox.get('key')); // valuebox.delete('key')// delete data

感谢您的浏览,如果您发现任何差别,请评论,并会给您回复。追随咱们的 Flutter 相干的内容。

结束语

如果本文对你有帮忙,请转发让更多的敌人浏览。

兴许这个操作只有你 3 秒钟,对我来说是一个激励,感激。

祝你有一个美妙的一天~


© 猫哥

  • 微信 ducafecat
  • https://wiki.ducafecat.tech
  • https://video.ducafecat.tech

本文由 mdnice 多平台公布

正文完
 0