问题标签 [flutter-hive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
115 浏览

json - 集成 Hive 数据库

我正在尝试集成配置单元数据库,因此可以使用离线功能。我正在从 Json 接收数据(标记信息),我可以将其成功保存在数据库中,并且当我有互联网连接时,它会在 Google 地图上显示标记。

但是当设备离线时,该功能不再起作用。我在代码中检测到问题,但不知道如何解决。

这是我的代码:(我调用“getToilets()”来接收信息)

地点:

地点.g:

当我从 Hive db 收到我的数据时,我收到此错误:

有人知道为什么代码此时停止工作以及我该如何解决它?

编辑:

我只是保存了来自 http.get 请求而不是 Locations.fromJson 的响应。

0 投票
1 回答
895 浏览

flutter - Riverpod 的 StreamProvider 在读取 Hive 的盒子时卡在加载中 | 扑

我正在尝试使用 Hive 将我保存的用户数据流式传输到一个名为“用户”的框中。这是为了显示基于用户提供的信息的屏幕。目前,该框不包含任何数据,因此我希望以下代码显示蓝屏。否则它应该是绿色或紫色。我必须知道何时读取完成的值,以便我知道返回的值是否null表示数据尚未加载或用户框为空。

我正在使用 Riverpod 进行状态管理和这种方法。

我实现了以下两个提供程序

并想像这样使用它们:

这个实现的问题是它总是显示一个黄色的屏幕,这意味着它卡在加载中。有任何想法吗?

0 投票
1 回答
1002 浏览

flutter - Riverpod 的 StreamProvider 只产生一次 StreamValue | 颤振和蜂巢

我编写了一个 StreamProvider,我在启动后立即收听,以获取有关潜在登录用户的所有信息。如果没有用户,那么结果将为空,监听器保持在加载状态,所以我决定发回一个空用户的默认值,让我知道加载完成。我必须这样做,因为 Hive 的 watch() 方法仅在数据更改时触发,而在启动时不会触发。所以在那之后,我希望 watch() 方法完成它的工作,但问题在于以下场景:

  1. 启动时:无用户 -插入用户 -> watch 方法被触发 -> 我得到插入的用户数据 -> 删除登录的用户 -> watch 方法没有被触发。

  2. 启动时:完整用户-删除用户->触发监视方法->我得到一个空用户->插入用户->未触发监视方法。

一段时间后,我发现我可以随心所欲地使用所有 CRUD 操作,并且 Hive 的盒子做了它应该做的事情,但是 watch() 方法在它被触发一次后不再被触发。

流提供者:

聆听者:

CRUD 方法:

知道如何告诉 StreamProvider watch() 方法应该保持活动状态,即使一个值已经发出?

0 投票
1 回答
87 浏览

string - “String”类型不是“FontStyle”类型的子类型

我试图在 Flutter 的 HIVE 数据库中将 FontStyle 值和 FontWeight 值存储为字符串值。但是,在获取值时,我面临无法将 String 值转换为 FontStyle 或 FontWeight 值的问题。我可以使用 If 语句并实现它,但有没有办法将字符串“FontStyle.italic”转换为 FontStyle.italic?

0 投票
0 回答
149 浏览

flutter - Flutter Hive 模型抛出索引超出范围:没有有效的索引:填充 HiveList 时出现 0 错误

我正在尝试在我的 Flutter 应用程序中填充一个 Hive 框。我用一些任务对象填充它,然后每个任务都有一个 HiveList 的线索对象

当我运行代码时,出现以下错误:

我正在分配一个变量,而不是尝试访问数组中的元素,所以我不知道错误的含义。

有任何想法吗?

0 投票
1 回答
443 浏览

firebase - 利用 Hive Box 数据和 Firestore 流

在 Flutter Web 上,我有一个来自 firestore 的流,它显示集合中的当前消息,但是当互联网不可用时,我无法从该流中访问这些消息。

我决定使用蜂巢盒来缓存消息并在没有互联网可用时返回它们。

我使用 Hive Box 缓存消息,但利用提供程序并首先返回缓存数据并将其与来自 firestore 的流链接起来对我来说确实具有挑战性。

尝试将 Hive Box 中的缓存数据转换为广播流,并使用 ZipStreams 与 Firestore 流结合,并进行了映射,但仍然无法正常工作。

请我需要帮助以最好的方式来解决这个问题。

0 投票
1 回答
86 浏览

dart - Dart Hive TypeAdapter 对 write() 方法的合理性

我试图了解在 Hive TypeAdapter 方法中使用writeByte(3)的原因。write

请考虑类:

TypeAdapter下面很容易理解该read方法,因为它只是顺序读取每个字段。

但是,我试图弄清楚为什么相同的机制不适用于write, 而不是..writeByte(...)在每个字段之前使用。而且,第一个是什么意思..writeByte(2)

感谢您的任何澄清。

0 投票
4 回答
3475 浏览

flutter - 尝试初始化 Hive 时出现奇怪的错误

错误:Unhandled Exception: HiveError: You need to initialize Hive or provide a path to store the box.

基本上我的依赖项中有这些,所以一切都应该很好。

我也有import 'package:hive/hive.dart';import 'package:path_provider/path_provider.dart';在文件中

所以我只有

叫。

我不明白。我想我做的一切都是正确的。让我知道您是否需要其他东西。

0 投票
1 回答
161 浏览

flutter - 我是否需要为 Flutter 中的 Hive TypeAdapter 创建创建额外的模型?

我有费用模型,

和 Hive 模型为,

我可以只使用 Hype 模型来处理费用,还是需要为 Hive TypeAdapter sepefic 保留单独的模型?

0 投票
1 回答
266 浏览

flutter - 从 Hive 框中删除的对象仍会加载到内存中

在我的 Flutter 应用程序中,我有一个带有 Player 对象的 Hive 框。只是为了调试,我在构造函数中从我的播放器对象中输出一些数据,如下所示:

玩家像这样添加到盒子中,其中 player.id 是唯一键:

启动应用程序时,我还会打印 playerBox 的值:

这给了我所有添加的玩家。到目前为止,一切都很好。但是......删除这样的玩家后:

它开始表现得有点奇怪。当我重新启动应用程序时,已删除的播放器不再位于 playerBox.values 中,因此显然已从那里删除。但是所有已删除播放器对象的构造函数仍在运行。

检查堆栈我可以看到这些对象确实是由 PlayerAdapter 实例化的。因此,由于某种原因,Hive 仍然从磁盘读取已删除的对象,但它们不在框中。

** 编辑

我还检查了模拟器上的 player.hive 文件,所有删除的模型实际上都在文件中。即使它们已被删除并且不会与 playerBox.values 一起返回

任何想法可能是什么原因?这是预期的行为吗?