Skip to content

Hive 使用

插件:

yaml
dependencies:
	hive
	hive-flutter
dev_dependencies
	hive_generator
	build_runner

取和自己项目兼容的插件版本即可

初始化main

dart
Void main async(){
  // 确保应用初始化完成
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化Hive(❗注意: 这里的Hive是hive_flutter包的,而不是hive包里的)
  await Hive.initFlutter();
  // 注册Hive适配器
  Hive.registerAdapter(AppInfoAdapter());
  Hive.registerAdapter(AppCategoryAdapter());

}

保存基本数据类型是不需要Hive适配器的,只有你存储的数据有自己的对象数据(Class),会需要你自己写一个适配器。

编写Hive适配器

在“data”目录下创建文件data-models.dart

dart
import 'package:hive/hive.dart';
import 'package:hive_flutter/hive_flutter.dart';

part 'data_models.g.dart'; // 代码生成文件

class User extends HiveObject {

	/// 用户名称
	@HiveField(0)
	final String name;

	/// 用户年龄
	@HiveField(1)
	final int age;

	User({
		required this.name,
		required this.age,
	})
}

注意点:

  1. partdata-models.g.dart 名称要和文件名一致

  2. @HiveField(0) hive字段声饰,必须从0开始,下一个字段+1,如上0之后就是1.

它的修饰字段和实际对象数据字段是保持一致的。如 HiveField(0) 的 0 就对应的实际数据的name字段。不能乱改动,一旦改动,和旧数据对不上会报错。