Flutter Hive - 管理保存数据的最佳方式

问题描述

我需要一些有关 Flutter Hive 的指导。我正在为销售员制作一个应用程序,它一直需要缓存数据,因为他可能会去没有互联网连接的地方。起初我使用 sqflite,但后来我发现了 Hive,它比 sqflite 快得多。所以我试一试。

问题/问题

  1. 如何清除/删除特定框或所有框以重新创建它们?

await Hive.deleteBoxFromdisk - 非常有效。有一次我得到了两次或更多次。我需要那个,因为我正在尝试提供一个按钮来手动同步所有数据。我还需要它在后台自动同步。我不知道哪个元素被更改、删除添加,所以最简单的方法删除整个框并使用新数据重新创建它。

  1. 元素定制

Customer 是一张带有 4 个 Text 小部件的卡片。每个小部件可能包含基于用户配置的不同信息:

enter image description here

您可以选择一个项目,更改它的“值”。当我保存它时,一切正常,但是当返回时,更改一项并再次保存它给了我:

HiveError (HiveError: The same instance of an HiveObject cannot be stored in two different Boxes.)

我是这样做的:

  Future saveSelectedElements(List<CustomerElement> selectedElements) async {
    await Hive.deleteBoxFromdisk(CustomerCardCustomization.BoxName);
    var Box = await Hive.openBox<CustomerElement>(BoxName);
    await Box.addAll(selectedElements);
  }

总结

所有这些问题都可能是基于我对图书馆的缺乏经验,我认为移除盒子并重新创建它们不是一个好主意。我很久以前尝试过 Flutter,这个项目是对旧的第一次尝试的升级

下一步将是使用 Hive 具有自动保存功能的文档,我已经很害怕它了...

#FlutteR 医生

[√] Flutter (Channel stable,2.0.4,on Microsoft Windows [Version 10.0.19042.928],locale pl-PL)
[!] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    X Android license status unkNown.
      Run `Flutter doctor --android-licenses` to accept the SDK licenses.
      See https://Flutter.dev/docs/get-started/install/windows#android-setup for more details.
[√] Chrome - develop for the web
[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.9.3)
[√] Android Studio (version 4.1.0)
[√] VS Code (version 1.55.2)
[√] VS Code,64-bit edition (version 1.50.1)
[√] Connected device (4 available)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)