Flutter - 如何添加和检索数据 to/from 配置单元?

Flutter - How to add and retrieve data to/from hive?

我知道这听起来很简单,我已经完成了文档中给出的示例。然而不知何故我无法做到正确。

这是我的:

 void main() async {
  await Hive.initFlutter();
  //Hive.openBox('workoutBox');
  runApp(const MyApp());
}
...

下一个屏幕:

var box;
...

正在尝试添加到框

Future<void> _save() async{
// save doc id somewhere
final Id = doc.id;

//box = await Hive.openBox('workoutBox');
box.put("Id", Id);
}

正在尝试在另一个函数中检索:

var someId = box.get("Id");

当前错误:在 null 上调用了 get

我的疑惑是,where/how在这种情况下你会申报、打开和取回盒子吗?

您可以执行以下操作:

void main() async {
  await Hive.initFlutter();
  await Hive.openBox('workoutBox'); //<- make sure you await this
  runApp(const MyApp());
}

...

_save() { // <- can be a synchronous function
  final box = Hive.box('workoutBox'); //<- get an already opened box, no await necessary here
  // save doc id somewhere
  final Id = doc.id;
  box.put("Id", Id);
}

您似乎忘记了初始化 Box 参数并将 openBox 函数返回的值赋给它。

Hive 初始化后你应该有这样的东西:

Box<myValue> boxValue = await Hive.openBox("myKey");

重要提示:检索方法将取决于您需要做什么,更重要的是,首先取决于您如何保存数据。

假设您这样保存数据:

await boxValue.add(value);

通过像这样添加数据,分配给该值的键将是一个自动递增的键,因此尝试使用一开始从未分配过的特定键检索它将会失败。

如果你确实像这样添加了数据:

await boxValue.put("myKey", value);

然后您将能够使用预期的密钥成功获取它。