主要功能: - ✅ 完成Book模型(电子书基本信息管理) - ✅ 完成Highlight模型(文本高亮功能) - ✅ 建立Flutter数据模型设计标准 技术特点: - 采用不可变对象设计模式 - 实现完整的序列化支持(toMap/fromMap) - 提供便利的工厂构造函数 - 正确处理枚举类型序列化 - 完善的空值安全处理 学习文档: - 📚 项目结构与环境配置指南 - 🎯 数据模型设计思路分析 - 💡 Flutter数据模型最佳实践 下一步: - 实现Annotation批注模型 - 设计本地存储方案 - 开始UI组件开发 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2.4 KiB
2.4 KiB
Flutter 数据模型设计学习笔记
一、数据模型设计的重要性
在Flutter应用开发中,数据模型是整个应用的"地基":
- 决定UI结构:数据结构直接影响界面显示方式
- 影响状态管理:数据复杂度决定了状态管理方案的选型
- 指导存储设计:数据结构决定了如何进行本地存储和网络传输
二、Flutter数据模型设计原则
1. 不可变性原则(Immutability)
为什么需要不可变性?
- Flutter的Widget重建机制基于状态比较
- 不可变对象更容易进行状态比较和更新检测
- 避免"意外修改"导致的bug
实现方式:
- 所有字段使用
final修饰 - 提供
copyWith()方法创建新对象 - 不要提供修改字段的方法
2. 序列化支持
为什么需要序列化?
- 本地存储需要将对象转换为可存储格式
- 网络传输需要JSON格式
- 状态管理工具需要状态保存功能
必需方法:
toMap()- 将对象转换为MapfromMap()- 从Map创建对象
3. 空值安全
实践原则:
- 引用类型字段要有默认空值(如空列表、空Map)
- 使用
?表示可为null的字段 - 构造函数中使用required标记必需字段
三、电子书阅读器核心实体分析
核心需求分析:
- 支持导入epub、mobi、txt文件 → 需要Book模型
- 划线(不同颜色) → 需要Highlight模型
- 批注 → 需要Annotation模型
- 书签 → 需要Bookmark模型
- 书架管理 → 需要Bookshelf模型
- 阅读进度 → 需要ReadingProgress模型
实体关系:
- 一个书架包含多本书
- 一本书属于多个书架
- 一本书有多个章节、批注、高亮、书签
- 一本书有一个阅读进度
四、学习步骤
第一步:创建Book模型(最核心的实体)
包含字段:
- 基本信息:id, title, author, publisher
- 文件信息:filePath, format, fileSize
- 阅读信息:status, addedDate, totalPages
- 扩展信息:tags, rating, description
第二步:创建书架相关模型
- Bookshelf:书架信息
- BookshelfBook:书架与书籍的关联
第三步:创建阅读相关模型
- ReadingProgress:阅读进度
- Annotation:批注
- Highlight:高亮
- Bookmark:书签
第四步:学习本地存储方案
- 选择Hive数据库
- 实现Repository模式
- 配置数据持久化