问题标签 [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.
json - 集成 Hive 数据库
我正在尝试集成配置单元数据库,因此可以使用离线功能。我正在从 Json 接收数据(标记信息),我可以将其成功保存在数据库中,并且当我有互联网连接时,它会在 Google 地图上显示标记。
但是当设备离线时,该功能不再起作用。我在代码中检测到问题,但不知道如何解决。
这是我的代码:(我调用“getToilets()”来接收信息)
地点:
地点.g:
当我从 Hive db 收到我的数据时,我收到此错误:
有人知道为什么代码此时停止工作以及我该如何解决它?
编辑:
我只是保存了来自 http.get 请求而不是 Locations.fromJson 的响应。
flutter - Riverpod 的 StreamProvider 在读取 Hive 的盒子时卡在加载中 | 扑
我正在尝试使用 Hive 将我保存的用户数据流式传输到一个名为“用户”的框中。这是为了显示基于用户提供的信息的屏幕。目前,该框不包含任何数据,因此我希望以下代码显示蓝屏。否则它应该是绿色或紫色。我必须知道何时读取完成的值,以便我知道返回的值是否null
表示数据尚未加载或用户框为空。
我正在使用 Riverpod 进行状态管理和这种方法。
我实现了以下两个提供程序
并想像这样使用它们:
这个实现的问题是它总是显示一个黄色的屏幕,这意味着它卡在加载中。有任何想法吗?
flutter - Riverpod 的 StreamProvider 只产生一次 StreamValue | 颤振和蜂巢
我编写了一个 StreamProvider,我在启动后立即收听,以获取有关潜在登录用户的所有信息。如果没有用户,那么结果将为空,监听器保持在加载状态,所以我决定发回一个空用户的默认值,让我知道加载完成。我必须这样做,因为 Hive 的 watch() 方法仅在数据更改时触发,而在启动时不会触发。所以在那之后,我希望 watch() 方法完成它的工作,但问题在于以下场景:
启动时:无用户 -插入用户 -> watch 方法被触发 -> 我得到插入的用户数据 -> 删除登录的用户 -> watch 方法没有被触发。
启动时:完整用户-删除用户->触发监视方法->我得到一个空用户->插入用户->未触发监视方法。
一段时间后,我发现我可以随心所欲地使用所有 CRUD 操作,并且 Hive 的盒子做了它应该做的事情,但是 watch() 方法在它被触发一次后不再被触发。
流提供者:
聆听者:
CRUD 方法:
知道如何告诉 StreamProvider watch() 方法应该保持活动状态,即使一个值已经发出?
string - “String”类型不是“FontStyle”类型的子类型
我试图在 Flutter 的 HIVE 数据库中将 FontStyle 值和 FontWeight 值存储为字符串值。但是,在获取值时,我面临无法将 String 值转换为 FontStyle 或 FontWeight 值的问题。我可以使用 If 语句并实现它,但有没有办法将字符串“FontStyle.italic”转换为 FontStyle.italic?
flutter - Flutter Hive 模型抛出索引超出范围:没有有效的索引:填充 HiveList 时出现 0 错误
我正在尝试在我的 Flutter 应用程序中填充一个 Hive 框。我用一些任务对象填充它,然后每个任务都有一个 HiveList 的线索对象
当我运行代码时,出现以下错误:
我正在分配一个变量,而不是尝试访问数组中的元素,所以我不知道错误的含义。
有任何想法吗?
firebase - 利用 Hive Box 数据和 Firestore 流
在 Flutter Web 上,我有一个来自 firestore 的流,它显示集合中的当前消息,但是当互联网不可用时,我无法从该流中访问这些消息。
我决定使用蜂巢盒来缓存消息并在没有互联网可用时返回它们。
我使用 Hive Box 缓存消息,但利用提供程序并首先返回缓存数据并将其与来自 firestore 的流链接起来对我来说确实具有挑战性。
尝试将 Hive Box 中的缓存数据转换为广播流,并使用 ZipStreams 与 Firestore 流结合,并进行了映射,但仍然无法正常工作。
请我需要帮助以最好的方式来解决这个问题。
dart - Dart Hive TypeAdapter 对 write() 方法的合理性
我试图了解在 Hive TypeAdapter 方法中使用writeByte(3)
的原因。write
请考虑类:
在TypeAdapter
下面很容易理解该read
方法,因为它只是顺序读取每个字段。
但是,我试图弄清楚为什么相同的机制不适用于write
, 而不是..writeByte(...)
在每个字段之前使用。而且,第一个是什么意思..writeByte(2)
?
感谢您的任何澄清。
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';
在文件中
所以我只有
叫。
我不明白。我想我做的一切都是正确的。让我知道您是否需要其他东西。
flutter - 我是否需要为 Flutter 中的 Hive TypeAdapter 创建创建额外的模型?
我有费用模型,
和 Hive 模型为,
我可以只使用 Hype 模型来处理费用,还是需要为 Hive TypeAdapter sepefic 保留单独的模型?
flutter - 从 Hive 框中删除的对象仍会加载到内存中
在我的 Flutter 应用程序中,我有一个带有 Player 对象的 Hive 框。只是为了调试,我在构造函数中从我的播放器对象中输出一些数据,如下所示:
玩家像这样添加到盒子中,其中 player.id 是唯一键:
启动应用程序时,我还会打印 playerBox 的值:
这给了我所有添加的玩家。到目前为止,一切都很好。但是......删除这样的玩家后:
它开始表现得有点奇怪。当我重新启动应用程序时,已删除的播放器不再位于 playerBox.values 中,因此显然已从那里删除。但是所有已删除播放器对象的构造函数仍在运行。
检查堆栈我可以看到这些对象确实是由 PlayerAdapter 实例化的。因此,由于某种原因,Hive 仍然从磁盘读取已删除的对象,但它们不在框中。
** 编辑
我还检查了模拟器上的 player.hive 文件,所有删除的模型实际上都在文件中。即使它们已被删除并且不会与 playerBox.values 一起返回
任何想法可能是什么原因?这是预期的行为吗?