如何在Hive中存储类列表?含API获取列表与多属性存储场景
将自定义模型列表与客户信息存入Hive
我通过API获取了一个包含自定义模型类的ItemList列表,现在希望将该列表与客户姓名、客户地址等其他属性一同存储到Hive中,相关代码如下:
import 'package:hive/hive.dart'; import '../item_model.dart'; import 'hive_model.dart'; part 'saved_hive_model.g.dart'; @HiveType(typeId: 15) class SavedDatInHive { @HiveField(10) final String totalPrice; @HiveField(11) final List<ItemList> list; @HiveField(12) final String CustomerName; SavedDatInHive(this.list, this.CustomerName, {required this.totalPrice}); }
核心实现要点
ItemList需适配Hive序列化:Hive无法直接存储未标记的自定义对象,ItemList类必须添加Hive注解,示例如下:import 'package:hive/hive.dart'; part 'item_list.g.dart'; @HiveType(typeId: 16) class ItemList { @HiveField(0) final String itemId; @HiveField(1) final String itemName; // 补充你的其他字段 ItemList(this.itemId, this.itemName); }- 生成适配器文件:完成类注解后,执行命令生成Hive所需的适配器代码:
flutter packages pub run build_runner build - 注册适配器:在应用启动时注册所有自定义模型的适配器,确保Hive能识别这些类型:
void main() async { await Hive.initFlutter(); Hive.registerAdapter(SavedDatInHiveAdapter()); Hive.registerAdapter(ItemListAdapter()); runApp(MyApp()); } - 存储与读取示例:
// 存储数据 final dataBox = await Hive.openBox('customer_order_box'); final orderData = SavedDatInHive( apiFetchedItemList, // 从API获取的ItemList列表 '李四', totalPrice: '256.80', ); await dataBox.put('order_001', orderData); // 读取数据 final fetchedOrder = dataBox.get('order_001') as SavedDatInHive; print(fetchedOrder.CustomerName); print(fetchedOrder.list.length);
内容的提问来源于stack exchange,提问作者Ankur Das
相关产品推荐
相关产品推荐

