欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

一、本日目标

  1. 完善数据存储功能,实现课程和作业数据的持久化
  2. 个人页统计卡片与真实数据联动
  3. 创建全局统计服务,实现跨页面数据同步

二、完成的工作

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 跨页面状态共享
// 在 main.dart 中注册
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 数据库存储,个人页统计卡片与真实数据联动,创建全局统计服务实现跨页面数据同步。项目核心功能已完全具备离线使用能力。

更多推荐