1

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

问题/问题

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

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

  1. 元素定制

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

在此处输入图像描述

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

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 (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)
4

0 回答 0