import 'dart:convert'; import 'package:hive_ce/hive.dart'; import 'package:vaani/features/per_book_settings/models/book_settings.dart'; import 'package:vaani/features/settings/models/models.dart'; // register all models to Hive for serialization Future registerModels() async { Hive.registerAdapter( JsonAdapter( id: 1, fromJson: AppSettings.fromJson, ), ); Hive.registerAdapter( JsonAdapter( id: 2, fromJson: ApiSettings.fromJson, ), ); Hive.registerAdapter( JsonAdapter( id: 3, fromJson: AudiobookShelfServer.fromJson, ), ); Hive.registerAdapter( JsonAdapter( id: 4, fromJson: AuthenticatedUser.fromJson, ), ); Hive.registerAdapter( JsonAdapter( id: 5, fromJson: BookSettings.fromJson, ), ); } /// 通用 JSON Adapter(适合简单模型) class JsonAdapter extends TypeAdapter { final T Function(Map) fromJson; final int id; const JsonAdapter({ required this.id, required this.fromJson, }); @override int get typeId => id; @override T read(BinaryReader reader) { final jsonString = reader.readString(); final jsonMap = jsonDecode(jsonString); return fromJson(jsonMap); } @override void write(BinaryWriter writer, T obj) { writer.writeString(jsonEncode(obj)); } } // Future registerModels() async { // Hive.registerAdapter( // 'AppSettings', // ((json) => AppSettings.fromJson(json)), // ); // Hive.registerAdapter( // 'ApiSettings', // ((json) => ApiSettings.fromJson(json)), // ); // Hive.registerAdapter( // 'AudiobookShelfServer', // ((json) => AudiobookShelfServer.fromJson(json)), // ); // Hive.registerAdapter( // 'AuthenticatedUser', // ((json) => AuthenticatedUser.fromJson(json)), // ); // Hive.registerAdapter( // 'BookSettings', // ((json) => BookSettings.fromJson(json)), // ); // Hive.registerAdapter( // '_\$BookSettingsImpl', // hack because of freezed // ((json) => BookSettings.fromJson(json)), // ); // }