【发布时间】:2023-01-30 13:13:20
【问题描述】:
想要制作点击按钮后保存信息的功能(保存)
但是蜂巢给出了错误...Screen of VS
错误在这一行:
static Box notes = Hive.box(HiveKeys.notesKey);
发生异常。 HiveError(HiveError:框“笔记" 已经打开并且类型为 Box。)
【问题讨论】:
想要制作点击按钮后保存信息的功能(保存)
但是蜂巢给出了错误...Screen of VS
错误在这一行:
static Box notes = Hive.box(HiveKeys.notesKey);
发生异常。 HiveError(HiveError:框“笔记" 已经打开并且类型为 Box。)
【问题讨论】:
首先,您不能直接将配置单元数据键入特定模型。您需要从框中获取动态数据,然后将该数据转换为所需的类型,第二件事是您似乎已经在代码中的某处打开了此框。如果您可以在打开蜂巢箱的地方分享代码,那就太好了
【讨论】:
如果您想以列表形式存储数据,请按照以下步骤操作
main.dart文件
等待 Hive.openBox<List>("hiveTable");
第二步:制作一个包含hive的adapter的模型类
part 'hive_clean_entity.freezed.dart'; part 'hive_clean_entity.g.dart'; @freezed @HiveType(typeId: 6, adapterName: "ContactCleanHiveAdapter") @freezed class HiveCleanEntity with _$HiveCleanEntity { const factory HiveCleanEntity({ @HiveField(0) @Default("") String contactId, @HiveField(1) @Default("") String displayName, @HiveField(2) @Default("") String givenName, @HiveField(3) @Default("") String phoneNumber, }) = _HiveCleanEntity; factory HiveCleanEntity.initial() => const HiveCleanEntity( contactId: "", displayName: "", givenName: "", phoneNumber: "", ); }像这样 - 你可以传递你选择的 typeId
第 3 步:运行
build_runner命令,生成 2 个模型 dto 文件flutter pub 运行 build_runner watch --delete-conflicting-outputs
第 4 步:现在打开要存储数据的框:
ListHiveCleanEntity putlist = [];
HiveCleanEntity hiveCleanEntity = HiveCleanEntity( contactId: “1”, displayName: "2", givenName: "xyz", phoneNumber:”+91”); putlist.add(hiveCleanEntity); final cleanContactBox = Hive.box<List>("hiveTable"); cleanContactBox.put("subTable",putlist);第五步:获取数据到本地存储
final list = cleanContactBox.get("subTable")?.cast<HiveCleanEntity>() ?? [];
【讨论】: