10 changed files with 175 additions and 21 deletions
@ -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 @@ |
|||||||
|
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