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);
然后您将能够使用预期的密钥成功获取它。
我知道这听起来很简单,我已经完成了文档中给出的示例。然而不知何故我无法做到正确。
这是我的:
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);
然后您将能够使用预期的密钥成功获取它。