readful/lib/services/bookmark_repository.dart
ddshi 02010ff972 feat: 完成数据持久化阶段并规划UI开发
📊 数据持久化阶段完成:
- 完成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>
2025-12-01 17:34:50 +08:00

66 lines
1.7 KiB
Dart

import 'package:readful/models/book.dart';
import '../models/bookmark.dart';
import 'database_service.dart';
class BookmarkRepository {
final DatabaseService _databaseService = DatabaseService.instance;
/// 获取所有书签
Future<List<Bookmark>> getAllBookmarks() async {
try {
final bookmarksBox = _databaseService.getBookmarksBox();
return bookmarksBox.values.toList();
} catch (e) {
print('❌ 获取所有书签失败: $e');
rethrow;
}
}
/// 根据ID获取书签
Future<Bookmark?> getBookmarkById(String id) async {
try {
final bookmarksBox = _databaseService.getBookmarksBox();
return bookmarksBox.get(id);
} catch (e) {
print('❌ 根据ID获取书签失败: $e');
rethrow;
}
}
/// 添加新书签
Future<void> addBookmark(Bookmark bookmark) async {
try {
final bookmarksBox = _databaseService.getBookmarksBox();
await bookmarksBox.put(bookmark.id, bookmark);
print('✅ 书签添加成功: ${bookmark.title}');
} catch (e) {
print('❌ 添加书签失败: $e');
rethrow;
}
}
/// 更新书签信息
Future<void> updateBookmark(Bookmark bookmark) async {
try {
final bookmarksBox = _databaseService.getBookmarksBox();
await bookmarksBox.put(bookmark.id, bookmark);
print('✅ 书签更新成功: ${bookmark.title}');
} catch (e) {
print('❌ 更新书签失败: $e');
rethrow;
}
}
/// 删除书签
Future<void> deleteBookmark(String id) async {
try {
final bookmarksBox = _databaseService.getBookmarksBox();
await bookmarksBox.delete(id);
print('✅ 书签删除成功: $id');
} catch (e) {
print('❌ 删除书签失败: $e');
rethrow;
}
}
}