根据 Hive 的 Flutter 文档类型存储

基于 Hive 的 Flutter 文档类型存储

原文 medium.com/gytworkz/do…

前言

基于 Hive 的 Flutter 文档类型存储

长久以来,咱们一向运用同享首选项以键对格局在本地存储中存储数据,或许运用 SQLite 在 SQL 数据库中存储数据。

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

pub.dev/packages/hi…

正文

Features 特征

  • 跨平台: 移动,桌面,浏览器
  • 表演很棒
  • 径简单,强壮,直观的 API
  • 内置了很强的加密
  • 没有本机依靠项

Advantage 优势

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

Benchmark 基准

基于 Hive 的 Flutter 文档类型存储

速度对比

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 的 Flutter 文档类型存储

  • 盒子是什么?

存储在 Hive 中的一切数据都组织在框中。框能够与 SQL 中的表进行比较,但它没有结构,能够包括任何内容。

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

能够挑选,但主张!

要知道盒子能够容纳的确切数据,您能够指定盒子的类型

var box = await Hive.openBox<User>('users');
box.add(User());
box.add(5); // Compile time error

Advance Stage 前期阶段

现在是时分创立一个能够存储在蜂箱中的模型了。

过程 1: 创立 typeAdapter

  • 首先运用冻结注释为数据创立一个模型。

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

运用 app.quicktype.io 创立具有冻结注释的模型。

基于 Hive 的 Flutter 文档类型存储

sample model class

样本模型类

每个类都必须用具有仅有 typeID 的@HiveType 进行注释,每个字段都必须用具有仅有 fieldID 的@HiveField 进行注释。

运用生成器指令创立生成的类。

抖动 Pub 运行 build_runner build ー删去-抵触-输出

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

基于 Hive 的 Flutter 文档类型存储

adapter initialisation

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

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

过程 2: 创立 Hive 存储类

基于 Hive 的 Flutter 文档类型存储

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

  • wiki.ducafecat.tech

  • video.ducafecat.tech