基于 Hive 的 Flutter 文档类型存储
创始人
2024-03-02 02:20:00
0

基于 Hive 的 Flutter 文档类型存储

alt

原文 https://medium.com/gytworkz/document-type-storage-in-flutter-using-hive-a18ea9659d84

前言

alt

长久以来,我们一直使用共享首选项以键对格式在本地存储中存储数据,或者使用 SQLite 在 SQL 数据库中存储数据。

存储本地数据的另一种方法是将其存储为文档格式,类似于使用 Hive 包的 Firebase 云存储。

https://pub.dev/packages/hive

正文

Features 特征

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

Advantage 优势

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

Benchmark 基准

alt

速度对比

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 包获取应用程序的本地目录

alt
  • 盒子是什么?

存储在 Hive 中的所有数据都组织在框中。框可以与 SQL 中的表进行比较,但它没有结构,可以包含任何内容。

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

可以选择,但建议!

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

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

box.add(User());

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

Advance Stage 前期阶段

现在是时候创建一个可以存储在蜂箱中的模型了。

步骤 1: 创建 typeAdapter

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

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

使用 https://app.quicktype.io 创建具有冻结注释的模型。

alt

sample model class

样本模型类

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

使用生成器命令创建生成的类。

抖动 Pub 运行 build_runner build ー删除-冲突-输出

这将创建适配器,您可以使用它们在 main.dart 文件中进行初始化。

alt

adapter initialisation

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

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

步骤 2: 创建 Hive 存储类

alt

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 多平台发布

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...