Skip to content

asect/class_schedule_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

课表助手 (Class Schedule App)

一款手机课表识别与日历同步 App。

功能

  1. 拍照识别 - 调用系统相机拍摄课表照片,使用 ML Kit OCR 离线识别
  2. 文件导入 - 支持从相册选择图片、Excel (.xlsx/.xls) 文件导入
  3. 智能解析 - 自动识别课程名、教室、教师、周次、节次
  4. 日历同步 - 将课表同步到系统日历,支持重复事件和提醒
  5. 手动管理 - 手动添加、编辑、删除课程
  6. 周次切换 - 支持按周次查看课程

技术栈

  • 框架: Flutter 3.x
  • OCR: google_mlkit_text_recognition (离线中文识别)
  • Excel: excel 库解析 .xlsx/.xls
  • 日历: device_calendar 调用系统日历 API
  • 持久化: Hive 本地数据库
  • 状态管理: Provider

安装步骤

1. 安装 Flutter SDK

# 方式1: snap
sudo snap install flutter --classic

# 方式2: 手动下载
# https://flutter.dev/docs/get-started/install/linux

2. 克隆项目

cd /home/asect/class_schedule_app

3. 安装依赖

flutter pub get

4. 生成 Hive 适配器

flutter pub run build_runner build

5. 运行

# Android
flutter run

# iOS (需要 macOS)
flutter run -d ios

项目结构

lib/
├── 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       # 颜色工具

权限说明

Android (AndroidManifest.xml)

  • CAMERA - 拍照识别课表
  • READ_EXTERNAL_STORAGE / READ_MEDIA_IMAGES - 读取图片/文件
  • READ_CALENDAR / WRITE_CALENDAR - 同步到系统日历

iOS (Info.plist)

  • NSCameraUsageDescription - 相机
  • NSPhotoLibraryUsageDescription - 相册
  • NSCalendarsFullAccessUsageDescription - 日历

使用说明

  1. 打开 App 后点击「导入课表」
  2. 选择拍照、相册图片或 Excel 文件
  3. 系统自动识别并解析课程信息
  4. 确认后保存到课表
  5. 点击右上角菜单「同步到日历」即可生成日历提醒

注意事项

  • OCR 识别效果取决于图片清晰度,建议使用高分辨率截图
  • Excel 文件建议使用标准课表格式(行=节次,列=星期)
  • 日历同步会创建独立的「课表助手」日历账户
  • 同步后可在系统日历 App 中查看和管理课程事件

About

课表识别与日历同步 Flutter App

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors