Hive 等待
Hive Wait 提供一个 Hive 仓库,用于异步调用盒子中的方法。
在调用盒子的方法之前,等待 Hive 准备好。
用法
- 等待初始化 Hive
class CoreRepository<E> extends HiveRepository<E> {
CoreRepository(
String name, {
bool? lazy,
HiveCipher? encryptionCipher,
KeyComparator? keyComparator,
CompactionStrategy? compactionStrategy,
bool? crashRecovery,
String? boxPath,
Uint8List? bytes,
}) : super(
name,
lazy: lazy,
encryptionCipher: encryptionCipher,
keyComparator: keyComparator,
compactionStrategy: compactionStrategy,
crashRecovery: crashRecovery,
boxPath: boxPath,
bytes: bytes,
);
@override
Future<BoxBase<E>> init([HiveInterface? hive]) async {
await Hive.initFlutter();
// TODO: Register adapter
return await super.init(Hive);
}
}
- 与 get_it 一起使用
class CoreRepository<E> extends HiveRepository<E> {
CoreRepository(
String name, {
bool? lazy,
}) : super(name, lazy: lazy);
@override
Future<BoxBase<E>> init([HiveInterface? hive]) async {
await getIt.allReady();
hive = await getIt.getAsync<HiveInterface>();
return await super.init(Hive);
}
}
- 获取数据
getUser() async {
var userRepository = CoreRepository<User>('user');
return await userRepository.get(0);
}