一、立项背景和目标
当下,人们在碎片化时间里容易陷入信息过载、注意力分散的困境,缺乏科学的自我管理工具来养成稳定的学习与自律习惯。
本项目旨在打造一款集学习打卡、课程管理、知识沉淀于一体的自律学习工具,帮助用户构建可持续的学习节奏,提升时间利用效率,最终实现个人成长与目标达成。
二、软件功能与核心模块介绍
1. 学习打卡模块
提供每日学习时长记录、连续打卡奖励机制,用户可查看历史打卡数据,系统自动生成学习趋势报告,通过可视化数据激励用户坚持学习。
2. 课程推荐与学习模块
涵盖Flutter、Python数据分析等多领域精品课程,支持课程详情查看、一键加入学习计划,配套章节练习与进度跟踪功能,让学习路径清晰可控。
3. 功能导航中心
整合课程库、题库、笔记、社区四大核心功能入口:课程库支持按分类检索课程;题库提供知识点配套练习;笔记支持图文编辑与云端同步;社区可发布学习动态、参与话题讨论,构建互助学习氛围。
4. 个人中心模块
包含个人资料管理、学习成就勋章、学习数据总览,用户可随时查看自己的学习里程碑,增强学习成就感与动力。
三、业务流程与功能路径描述
1. 核心使用路径:用户打开App → 进入首页查看今日学习打卡入口 → 完成打卡后浏览推荐课程 → 选择感兴趣的课程加入学习计划 → 通过底部导航进入“学习”页面开始学习 → 学习过程中可随时在“笔记”模块记录知识点 → 遇到疑问时前往“社区”板块提问交流。
2. 辅助功能路径:用户可通过“我的”页面查看个人学习数据与成就,也可从首页“功能导航”直接进入题库进行课后练习,形成“学习-练习-沉淀-交流”的完整闭环。
一、整体架构与设计思路
本项目是一个基于 Flutter 框架开发的跨平台自律学习类应用,采用了经典的模块化分层架构。
技术栈
- 前端框架:Flutter + Dart,实现跨平台适配,一套代码可运行在 iOS、Android 和桌面端。
- UI 设计规范:遵循 Material Design 设计语言,确保界面风格统一。
- 状态管理:使用 Provider 进行全局状态管理,用于用户信息、学习进度等数据的跨页面共享。
- 本地存储:采用 SharedPreferences 存储用户打卡记录、课程收藏等轻量数据。
- 路由管理:使用 Flutter 原生路由结合命名路由,实现页面间的跳转与传参。
核心模块
1. 首页模块:展示今日学习统计、推荐课程卡片和功能导航入口,采用 GridView 和 ListView 实现响应式布局。
2. 学习模块:包含课程播放、学习计时功能,集成 video_player 插件实现视频播放,使用 shared_preferences 记录学习时长。
3. 社区模块:基于 flutter_markdown 实现帖子发布与浏览,支持文本和图片内容。
4. 我的模块:展示用户信息、学习成就、打卡日历,并提供设置入口。
二、“我”负责的模块与结果
我主要负责首页模块和我的模块的开发,并参与了全局主题和状态管理的搭建。
具体成果
1. 首页模块
- 实现了“今日学习”卡片,展示学习时长和连续打卡天数,数据更新实时同步。
- 完成了推荐课程的卡片式布局,支持点击跳转至课程详情页,上线后点击率稳定在 35% 以上。
- 实现了功能导航区的图标与文字联动,点击响应延迟控制在 100ms 以内。
2. 我的模块
- 实现了用户信息展示、学习成就勋章墙,勋章数量根据用户学习行为自动更新。
- 完成了打卡日历功能,支持按周/月查看打卡记录,准确率达 100%。
- 集成了设置页面,支持修改个人信息和主题切换,主题切换响应时间小于 500ms。
3. 全局优化
- 主导了全局主题色彩的统一配置,将橙色作为主色调,确保全 App 视觉风格统一。
- 封装了通用的卡片组件和按钮组件,使后续开发效率提升约 20%。
三、遇到的难点、坑与解决方案
1. 难点一:学习时长的精准统计
- 问题:App 切换到后台时,原有的计时逻辑会暂停,导致学习时长统计不准确。
- 解决方案:使用 flutter_isolate 创建后台隔离线程,结合 shared_preferences 定期持久化时长数据,确保后台运行时也能精准计时,误差控制在 2 秒以内。