10 changed files with 175 additions and 21 deletions
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
import 'package:hive_flutter/hive_flutter.dart'; |
||||
import 'package:win_text_editor/shared/models/std_filed.dart'; |
||||
|
||||
class StdFieldsCache { |
||||
static late final Box<StdField> _box; // 指定泛型类型 |
||||
|
||||
// 初始化 |
||||
static Future<void> init() async { |
||||
await Hive.initFlutter(); |
||||
Hive.registerAdapter(StdFieldAdapter()); // 在打开Box前注册适配器 |
||||
_box = await Hive.openBox<StdField>('uft_stdFieldsCache'); // 指定泛型类型 |
||||
} |
||||
|
||||
static Future<int> getLength() async { |
||||
return _box.length; |
||||
} |
||||
|
||||
// 通用数据存取 |
||||
static StdField? getData(String key) => _box.get(key); |
||||
static Future<void> setData(String key, StdField value) => _box.put(key, value); |
||||
|
||||
// 清空缓存 |
||||
static Future<void> clear() async { |
||||
await _box.clear(); |
||||
} |
||||
} |
||||
|
||||
// 确保typeId在整个应用中唯一 |
||||
class StdFieldAdapter extends TypeAdapter<StdField> { |
||||
@override |
||||
final int typeId = 7; // 改为一个唯一ID,确保不与其他适配器冲突 |
||||
|
||||
@override |
||||
StdField read(BinaryReader reader) { |
||||
return StdField(name: reader.read(), chineseName: reader.read(), dateType: reader.read()); |
||||
} |
||||
|
||||
@override |
||||
void write(BinaryWriter writer, StdField obj) { |
||||
writer.write(obj.name); |
||||
writer.write(obj.chineseName); |
||||
writer.write(obj.dateType); |
||||
} |
||||
} |
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
import 'package:hive/hive.dart'; |
||||
|
||||
@HiveType(typeId: 7) // 确保与适配器的typeId一致 |
||||
class StdField { |
||||
@HiveField(0) |
||||
final String name; |
||||
|
||||
@HiveField(1) |
||||
final String chineseName; |
||||
|
||||
@HiveField(2) |
||||
final String dateType; |
||||
|
||||
StdField({required this.name, required this.chineseName, required this.dateType}); |
||||
} |
Loading…
Reference in new issue