轻屿课表 - 产品文档

July 7, 2026 · View on GitHub

存档说明: 本文档为早期产品规划记录,细节可能滞后于当前版本。 请以 README.mddocs/releases/ 与应用内功能为准。 最后校对:2026-07-07(当前主线约 v2.0)。

文档信息

项目内容
产品名称轻屿课表
文档版本存档(原 v1.1.x 规划)
更新日期2026-07-07
目标平台Android (小米 HyperOS / 澎湃OS)

一、产品概述

1.1 产品定位

一款专为大学生设计的课程表应用,支持小米澎湃OS超级岛(Live Activities)功能,让用户在不打开应用的情况下即可查看当前课程信息。

1.2 目标用户

  • 在校大学生
  • 研究生
  • 需要管理课程时间的教育工作者

1.3 核心价值

  • 便捷性:一目了然的课程表视图
  • 实时性:通过小米超级岛实时显示当前课程
  • 个性化:支持自定义课程颜色和时间设置
  • 独立性:支持多个课表分别维护自己的课程与设置

二、功能需求

2.1 课程管理

功能描述优先级
添加课程输入课程名称、教师、地点、时间等信息P0
编辑课程修改已有课程的所有信息P0
删除课程删除不需要的课程P0
课程颜色为不同课程设置不同颜色标识P1

2.2 课程表展示

功能描述优先级
周次切换支持按学期周数配置查看P0
多课表切换支持多个独立课表的快速切换与管理P0
日视图按天展示课程列表P1
周视图网格形式展示整周课程P0
当前周高亮标记当前正在进行的课程P1

2.3 小米超级岛

功能描述优先级
实时显示显示当前正在进行的课程P0
下一节课预告下一节课信息P0
自动更新课程结束后自动切换显示P0
点击跳转点击通知打开应用P1

2.4 数据管理

功能描述优先级
本地存储使用SharedPreferences持久化数据P0
数据备份导出当前课表数据为JSONP1
数据恢复覆盖当前课表或导入为新课表P1

三、用户场景

场景一:添加新学期课程

用户:小明,大三学生
时间:新学期开学前
操作:
1. 打开应用
2. 点击右上角"+"按钮
3. 输入"高等数学"课程信息
4. 设置周一 1-2节,张教授,教301
5. 设置第1-16周
6. 保存课程

场景二:上课时查看课程信息

用户:小红,正在去教室的路上
时间:周一上午 7:55
操作:
1. 亮屏手机
2. 在小米超级岛上看到:
   - 当前课程:高等数学
   - 教室:教301
   - 时间:8:00-9:40
   - 下一节:大学英语 10:00
3. 直接前往教室,无需打开应用

场景三:查看本周课程安排

用户:小刚,周日晚上规划下周学习
时间:周日 21:00
操作:
1. 打开应用
2. 查看本周课程表网格
3. 切换到下周查看课程变化
4. 根据课程安排制定学习计划

四、界面设计

4.1 主界面

┌─────────────────────────────────────┐
│  课程表                    [今天][+] │
├─────────────────────────────────────┤
│     < 第 3 周 >                      │
├─────┬─────┬─────┬─────┬─────┬─────┬─────┤
│节次 │ 周一 │ 周二 │ 周三 │ 周四 │ 周五 │ 周六 │ 周日 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 1   │     │     │     │     │     │     │     │
│08:00│ 高数│     │ 英语│     │     │     │     │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 2   │     │     │     │     │     │     │     │
│08:55│ 高数│     │ 英语│     │     │     │     │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 3   │     │ 物理│     │ 编程│     │     │     │
│10:00│     │     │     │     │     │     │     │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ ... │     │     │     │     │     │     │     │
└─────┴─────┴─────┴─────┴─────┴─────┴─────┘

4.2 添加课程界面

┌─────────────────────────────────────┐
│  < 添加课程                      保存 │
├─────────────────────────────────────┤
│ 基本信息                            │
│ ┌─────────────────────────────────┐ │
│ │ 课程名称 *                      │ │
│ │ [高等数学___________________]   │ │
│ ├─────────────────────────────────┤ │
│ │ 授课教师                        │ │
│ │ [张教授_____________________]   │ │
│ ├─────────────────────────────────┤ │
│ │ 上课地点                        │ │
│ │ [教301______________________]   │ │
│ └─────────────────────────────────┘ │
│                                     │
│ 上课时间                            │
│ ┌─────────────────────────────────┐ │
│ │ 星期 [周一 ▼]  开始节 [1 ▼]    │ │
│ │ 结束节 [2 ▼]                   │ │
│ │ 时间: 08:00 - 09:40            │ │
│ └─────────────────────────────────┘ │
│                                     │
│ 周次设置                            │
│ ┌─────────────────────────────────┐ │
│ │ 开始周 [第1周 ▼] 结束周 [第16周▼]│ │
│ │ [ ] 单周  [ ] 双周              │ │
│ └─────────────────────────────────┘ │
│                                     │
│ 课程颜色                            │
│ ┌─────────────────────────────────┐ │
│ │ [■][■][■][■][■][■][■][■][■]    │ │
│ │ 蓝 绿 橙 粉 紫 青 红 棕 灰     │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────┘

4.3 小米超级岛显示

┌─────────────────────────────────────┐
│  ┌─────────────────────────────┐   │
│  │ 📚 高等数学                 │   │
│  │ 📍 教301 | 👨‍🏫 张教授        │   │
│  │ ⏰ 08:00 - 09:40            │   │
│  │ ─────────────────────────── │   │
│  │ 下一节: 大学英语 (10:00)    │   │
│  └─────────────────────────────┘   │
└─────────────────────────────────────┘

五、数据模型

5.1 课程数据结构

{
  "id": "uuid-string",
  "name": "高等数学",
  "teacher": "张教授",
  "location": "教301",
  "dayOfWeek": 1,
  "startSection": 1,
  "endSection": 2,
  "startTime": "08:00",
  "endTime": "09:40",
  "color": "#2196F3",
  "startWeek": 1,
  "endWeek": 16,
  "isOddWeek": false,
  "isEvenWeek": false
}

5.2 字段说明

字段类型说明
idString唯一标识符 (UUID)
nameString课程名称
teacherString授课教师
locationString上课地点
dayOfWeekint星期几 (1-7)
startSectionint开始节次 (1-10)
endSectionint结束节次 (1-10)
startTimeString开始时间 (HH:mm)
endTimeString结束时间 (HH:mm)
colorString颜色代码 (#RRGGBB)
startWeekint开始周次
endWeekint结束周次
isOddWeekbool是否单周
isEvenWeekbool是否双周

六、技术架构

6.1 系统架构图

┌─────────────────────────────────────────────────┐
│                   Flutter UI                    │
│  ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│  │ 课程表页 │ │ 添加课程 │ │    课程卡片      │ │
│  └──────────┘ └──────────┘ └──────────────────┘ │
├─────────────────────────────────────────────────┤
│              State Management                  │
│                 (Provider)                     │
├─────────────────────────────────────────────────┤
│                  Services                      │
│  ┌──────────────────┐ ┌──────────────────────┐ │
│  │  StorageService  │ │ MiuiLiveActivities   │ │
│  │ (SharedPreferences)│ │    (MethodChannel)   │ │
│  └──────────────────┘ └──────────────────────┘ │
├─────────────────────────────────────────────────┤
│               Platform Layer                   │
│  ┌──────────────────────────────────────────┐  │
│  │  Android Native (NotificationManager)    │  │
│  └──────────────────────────────────────────┘  │
└─────────────────────────────────────────────────┘

6.2 技术选型

组件技术方案说明
UI框架Flutter跨平台UI框架
状态管理Provider轻量级状态管理
本地存储SharedPreferences键值对存储
平台通信MethodChannelFlutter与原生通信
通知实现Android Notification小米超级岛底层

6.3 项目结构

lib/
├── main.dart                    # 应用入口
├── models/
│   └── course.dart              # 课程数据模型
├── providers/
│   └── timetable_provider.dart  # 状态管理
├── screens/
│   ├── timetable_screen.dart    # 主界面
│   └── add_course_screen.dart   # 添加课程
├── services/
│   ├── storage_service.dart     # 存储服务
│   └── miui_live_activities_service.dart  # 超级岛服务
└── widgets/
    └── course_card.dart         # 课程卡片组件

七、权限说明

7.1 Android权限

权限用途必要性
POST_NOTIFICATIONS发送通知 (Android 13+)必需
VIBRATE通知振动可选
FOREGROUND_SERVICE前台服务可选

7.2 权限申请时机

  1. 首次启动:申请通知权限
  2. 首次显示超级岛:确保通知渠道创建成功

八、兼容性

8.1 系统要求

平台最低版本推荐版本
Android8.0 (API 26)小米澎湃OS
Flutter SDK3.0.03.27.0+

8.2 设备支持

设备超级岛支持备注
小米澎湃OS设备✅ 完全支持推荐使用
其他Android设备⚠️ 仅通知无超级岛效果
iOS设备❌ 不支持需单独适配

九、版本规划

v1.0.0 (当前版本)

  • ✅ 基础课程表功能
  • ✅ 课程增删改查
  • ✅ 小米超级岛支持
  • ✅ 本地数据存储

v1.1.0 (计划中)

  • 📋 课程数据导入/导出
  • 📋 课表分享功能
  • 📋 桌面小组件

v1.2.0 (计划中)

  • 📋 教务系统对接
  • 📋 自动导入课程
  • 📋 课程提醒通知

v2.0.0 (远期规划)

  • 📋 iOS Live Activities支持
  • 📋 多学期管理
  • 📋 云同步功能

十、风险评估

风险影响应对措施
小米超级岛API变更功能失效关注小米开发者文档,及时更新
Android版本兼容性部分设备无法使用设置最低API版本,做好兼容处理
数据丢失用户课程丢失建议实现数据备份功能

附录

A. 参考文档

B. 术语解释

术语说明
超级岛小米澎湃OS的实时活动显示功能
节次大学课程的时间单位,通常1节=45分钟
单双周部分课程隔周上课的安排方式