【Flutter for OpenHarmony】实战 - Day 5(1):数据持久化实现
欢迎加入开源鸿蒙跨平台社区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 Providerlib/pages/home_page.dart修改集成数据库操作数据变化时刷新统计lib/pages/homework_page.dart修改集成数据库操作数据变化时刷新统计lib/pages/profile_page.dart修改使用 StatsService 显示真实数据支持下拉刷新四、技术要点4.1 数据库版本管理awaitopenDatabase(path,version:3,onCreate:_onCreate,// 首次创建onUpgrade:_onUpgrade,// 版本升级);4.2 数据模型序列化// 存储到数据库MapString,dynamictoJson(){...};// 从数据库读取factoryModel.fromJson(MapString,dynamicjson)Model(...);4.3 跨页面状态共享// 在 main.dart 中注册MultiProvider(providers:[ChangeNotifierProvider(create:(_)ThemeProvider()),ChangeNotifierProvider(create:(_)StatsService()),],child:...)// 在页面中使用finalstatsServiceProvider.ofStatsService(context);五、运行验证flutter clean flutter pub get flutter run验证项预期结果首次启动自动创建数据库显示示例课程7门添加课程关闭应用重启后课程仍在编辑课程重启后修改生效删除课程重启后课程消失作业完成状态勾选后重启状态保持个人页统计课程数、作业数、完成率与真实数据一致下拉刷新个人页下拉可刷新统计数据数据联动课表页添加课程后个人页课程数自动1六、当前项目状态模块状态说明课表页✅ 完成周次选择、日期联动、课程增删改查、持久化作业页✅ 完成作业管理、筛选统计、完成状态、持久化个人页✅ 完成用户信息、主题切换、统计卡片、数据联动主题适配✅ 完成浅色/深色/跟随系统全页面适配数据持久化✅ 完成SQLite 存储课程和作业数据跨页面同步✅ 完成统计服务实现数据联动七、下一步计划任务优先级作业到期本地通知中数据导入/导出JSON低云备份/跨设备同步低课表导入拍照识别OCR低本日完成数据持久化功能完整实现课程和作业数据使用 SQLite 数据库存储个人页统计卡片与真实数据联动创建全局统计服务实现跨页面数据同步。项目核心功能已完全具备离线使用能力。

相关新闻

最新新闻

日新闻

周新闻

月新闻