📊 数据持久化阶段完成: - 完成4个数据模型的Hive集成(Book, Bookshelf, Bookmark, Highlight) - 实现4个Repository数据访问层 - 生成5个TypeAdapter自动序列化文件 - 完成所有模型的CRUD操作和测试验证 📚 项目文档更新: - 新增数据持久化阶段完成总结文档 - 更新CLAUDE.md项目主文档 - 完善项目结构说明和开发进度 🚀 UI开发阶段规划: - 定义产品定位:类似微信读书的Material Design电子书阅读器 - 制定4阶段开发计划:UI基础架构→顶部导航→首页内容→数据集成 - 明确页面结构:底部Tab导航(首页/书库/统计/我的) - 规划核心功能:搜索、导入、最近阅读、摘录列表 🎯 下一里程碑: - 开始UI基础架构搭建 - 实现底部Tab导航和Material Design主题系统 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
64 lines
1.7 KiB
Dart
64 lines
1.7 KiB
Dart
import '../models/highlight.dart';
|
|
import 'database_service.dart';
|
|
|
|
class HighlightRepository {
|
|
final DatabaseService _databaseService = DatabaseService.instance;
|
|
|
|
/// 获取所有高亮
|
|
Future<List<Highlight>> getAllHighlights() async {
|
|
try {
|
|
final highlightsBox = _databaseService.getHighlightsBox();
|
|
return highlightsBox.values.toList();
|
|
} catch (e) {
|
|
print('❌ 获取所有高亮失败: $e');
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
/// 根据ID获取高亮
|
|
Future<Highlight?> getHighlightById(String id) async {
|
|
try {
|
|
final highlightsBox = _databaseService.getHighlightsBox();
|
|
return highlightsBox.get(id);
|
|
} catch (e) {
|
|
print('❌ 根据ID获取高亮失败: $e');
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
/// 添加新高亮
|
|
Future<void> addHighlight(Highlight highlight) async {
|
|
try {
|
|
final highlightsBox = _databaseService.getHighlightsBox();
|
|
await highlightsBox.put(highlight.id, highlight);
|
|
print('✅ 高亮添加成功: ${highlight.selectedText}');
|
|
} catch (e) {
|
|
print('❌ 添加高亮失败: $e');
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
/// 更新高亮信息
|
|
Future<void> updateHighlight(Highlight highlight) async {
|
|
try {
|
|
final highlightsBox = _databaseService.getHighlightsBox();
|
|
await highlightsBox.put(highlight.id, highlight);
|
|
print('✅ 高亮更新成功: ${highlight.selectedText}');
|
|
} catch (e) {
|
|
print('❌ 更新高亮失败: $e');
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
/// 删除高亮
|
|
Future<void> deleteHighlight(String id) async {
|
|
try {
|
|
final highlightsBox = _databaseService.getHighlightsBox();
|
|
await highlightsBox.delete(id);
|
|
print('✅ 高亮删除成功: $id');
|
|
} catch (e) {
|
|
print('❌ 删除高亮失败: $e');
|
|
rethrow;
|
|
}
|
|
}
|
|
} |