import 'package:hive_flutter/hive_flutter.dart'; import 'package:path_provider/path_provider.dart'; import '../models/book.dart'; class DatabaseService { static DatabaseService? _instance; static DatabaseService get instance => _instance ??= DatabaseService._(); DatabaseService._(); late Box _booksBox; Future init() async { try { // 1. 获取应用文档目录 final appDocumentDir = await getApplicationDocumentsDirectory(); // 2. 初始化Hive await Hive.initFlutter(appDocumentDir.path); // 3. 注册枚举TypeAdapter(使用内置的枚举适配器) Hive.registerAdapter(BookFormatAdapter()); Hive.registerAdapter(ReadingStatusAdapter()); // 4. 注册Book TypeAdapter Hive.registerAdapter(BookAdapter()); // 5. 打开Book Box _booksBox = await Hive.openBox('books'); print('✅ Hive数据库初始化成功'); } catch (e) { print('❌ Hive数据库初始化失败: $e'); rethrow; // 重新抛出异常,让调用者知道初始化失败 } } // 获取Book Box的方法 Box getBooksBox() { if (!Hive.isBoxOpen('books')) { throw Exception('Book Box未打开,请先调用init()'); } return _booksBox; // 添加这行返回语句 } /// 关闭数据库 Future close() async { await _booksBox.close(); await Hive.close(); } }