欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
一、本日目标
- 完善数据存储功能,实现课程和作业数据的持久化
- 个人页统计卡片与真实数据联动
- 创建全局统计服务,实现跨页面数据同步
二、完成的工作
2.1 数据持久化功能完善
| 任务 | 实现方式 | 状态 |
|---|
| 课程数据存储 | SQLite 数据库 | ✅ 完成 |
| 作业数据存储 | SQLite 数据库 | ✅ 完成 |
| 应用启动加载 | initState 中调用 _loadData() | ✅ 完成 |
| 增删改查同步 | 操作后自动更新数据库 | ✅ 完成 |
| 示例数据 | 首次启动自动插入 | ✅ 完成 |
2.2 数据库服务层 (DatabaseService)
getAllCourses()
insertCourse()
updateCourse()
deleteCourse()
getAllHomeworks()
insertHomework()
updateHomework()
deleteHomework()
2.3 全局统计服务 (StatsService)
| 功能 | 说明 |
|---|
| 课程数统计 | 从数据库实时获取课程数量 |
| 作业数统计 | 从数据库实时获取作业数量 |
| 完成率计算 | 已完成作业数 / 总作业数 × 100% |
| 跨页面同步 | 使用 Provider 实现状态共享 |
| 下拉刷新 | 个人页支持下拉刷新更新数据 |
2.4 数据联动流程
课表页/作业页数据变化
↓
调用 DatabaseService 更新数据库
↓
调用 StatsService.refresh()
↓
Provider 通知所有监听者
↓
个人页 UI 自动更新
三、修改文件清单
| 文件路径 | 变更类型 | 说明 |
|---|
pubspec.yaml | 修改 | 添加 sqflite、path_provider、path 依赖 |
lib/services/database_service.dart | 新增 | SQLite 数据库服务层 |
lib/services/stats_service.dart | 新增 | 全局统计服务 |
lib/models/course.dart | 修改 | 添加 toJson/fromJson 方法 |
lib/models/homework.dart | 修改 | 添加 toJson/fromJson/copyWith 方法 |
lib/main.dart | 修改 | 添加 StatsService Provider |
lib/pages/home_page.dart | 修改 | 集成数据库操作,数据变化时刷新统计 |
lib/pages/homework_page.dart | 修改 | 集成数据库操作,数据变化时刷新统计 |
lib/pages/profile_page.dart | 修改 | 使用 StatsService 显示真实数据,支持下拉刷新 |
四、技术要点
4.1 数据库版本管理
await openDatabase(
path,
version: 3,
onCreate: _onCreate,
onUpgrade: _onUpgrade,
);
4.2 数据模型序列化
Map<String, dynamic> toJson() => {...};
factory Model.fromJson(Map<String, dynamic> json) => Model(...);
4.3 跨页面状态共享
MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => ThemeProvider()),
ChangeNotifierProvider(create: (_) => StatsService()),
],
child: ...
)
final statsService = Provider.of<StatsService>(context);
五、运行验证
flutter clean
flutter pub get
flutter run
| 验证项 | 预期结果 |
|---|
| 首次启动 | 自动创建数据库,显示示例课程(7门) |
| 添加课程 | 关闭应用重启后课程仍在 |
| 编辑课程 | 重启后修改生效 |
| 删除课程 | 重启后课程消失 |
| 作业完成状态 | 勾选后重启状态保持 |
| 个人页统计 | 课程数、作业数、完成率与真实数据一致 |
| 下拉刷新 | 个人页下拉可刷新统计数据 |
| 数据联动 | 课表页添加课程后,个人页课程数自动+1 |
六、当前项目状态
| 模块 | 状态 | 说明 |
|---|
| 课表页 | ✅ 完成 | 周次选择、日期联动、课程增删改查、持久化 |
| 作业页 | ✅ 完成 | 作业管理、筛选统计、完成状态、持久化 |
| 个人页 | ✅ 完成 | 用户信息、主题切换、统计卡片、数据联动 |
| 主题适配 | ✅ 完成 | 浅色/深色/跟随系统,全页面适配 |
| 数据持久化 | ✅ 完成 | SQLite 存储课程和作业数据 |
| 跨页面同步 | ✅ 完成 | 统计服务实现数据联动 |
七、下一步计划
| 任务 | 优先级 |
|---|
| 作业到期本地通知 | 中 |
| 数据导入/导出(JSON) | 低 |
| 云备份/跨设备同步 | 低 |
| 课表导入(拍照识别OCR) | 低 |
本日完成:数据持久化功能完整实现,课程和作业数据使用 SQLite 数据库存储,个人页统计卡片与真实数据联动,创建全局统计服务实现跨页面数据同步。项目核心功能已完全具备离线使用能力。
所有评论(0)