一款手机课表识别与日历同步 App。
- 拍照识别 - 调用系统相机拍摄课表照片,使用 ML Kit OCR 离线识别
- 文件导入 - 支持从相册选择图片、Excel (.xlsx/.xls) 文件导入
- 智能解析 - 自动识别课程名、教室、教师、周次、节次
- 日历同步 - 将课表同步到系统日历,支持重复事件和提醒
- 手动管理 - 手动添加、编辑、删除课程
- 周次切换 - 支持按周次查看课程
- 框架: Flutter 3.x
- OCR: google_mlkit_text_recognition (离线中文识别)
- Excel: excel 库解析 .xlsx/.xls
- 日历: device_calendar 调用系统日历 API
- 持久化: Hive 本地数据库
- 状态管理: Provider
# 方式1: snap
sudo snap install flutter --classic
# 方式2: 手动下载
# https://flutter.dev/docs/get-started/install/linuxcd /home/asect/class_schedule_appflutter pub getflutter pub run build_runner build# Android
flutter run
# iOS (需要 macOS)
flutter run -d ioslib/
├── main.dart # 入口
├── models/
│ ├── course.dart # 课程数据模型
│ ├── course.g.dart # Hive 适配器
│ ├── schedule_settings.dart # 设置模型
│ └── schedule_settings.g.dart
├── services/
│ ├── ocr_service.dart # OCR 识别服务
│ ├── excel_service.dart # Excel 解析服务
│ ├── calendar_service.dart # 日历同步服务
│ ├── file_service.dart # 文件选择服务
│ └── storage_service.dart # 数据持久化
├── providers/
│ └── schedule_provider.dart # 状态管理
├── screens/
│ ├── home_screen.dart # 主页面(课表展示)
│ ├── import_screen.dart # 导入页面
│ ├── course_edit_screen.dart # 课程编辑页面
│ └── settings_screen.dart # 设置页面
├── widgets/
│ └── (组件)
└── utils/
└── course_colors.dart # 颜色工具
CAMERA- 拍照识别课表READ_EXTERNAL_STORAGE/READ_MEDIA_IMAGES- 读取图片/文件READ_CALENDAR/WRITE_CALENDAR- 同步到系统日历
NSCameraUsageDescription- 相机NSPhotoLibraryUsageDescription- 相册NSCalendarsFullAccessUsageDescription- 日历
- 打开 App 后点击「导入课表」
- 选择拍照、相册图片或 Excel 文件
- 系统自动识别并解析课程信息
- 确认后保存到课表
- 点击右上角菜单「同步到日历」即可生成日历提醒
- OCR 识别效果取决于图片清晰度,建议使用高分辨率截图
- Excel 文件建议使用标准课表格式(行=节次,列=星期)
- 日历同步会创建独立的「课表助手」日历账户
- 同步后可在系统日历 App 中查看和管理课程事件