Skip to content

第二代介面 #144

@abc873693

Description

@abc873693

概述

參考 @whes1015 在高科目前的實作:https://github.com/NKUST-ITC/NKUST-AP-Flutter/tree/test

ap_common_flutter_ui 全面遷移至 Material 3 設計規範,重構主題色彩系統,並新增多項 UI 元件與功能改進。

主要目標

  • Material 3 遷移
  • 重構 ApTheme,改善 color scheme 使用方式

後續改善項目

UX 改善 (ap_common_flutter_ui)

  • 國際化:39 個新 i18n key,替換 30+ 處硬編碼中文
  • 登入驗證:toast 改為 inline field error(ApTextField 新增 errorText)
  • HintContent 新增 onTap + actionText 參數(重試按鈕)
  • ProgressDialog 文字色 primary→onSurface、新增 onCancel callback
  • Accessibility:HintContent/NotificationItem/TextCheckBox/HomePageScaffold 加 Semantics
  • Haptic feedback:登入失敗 mediumImpact、學期選擇/成績切換 selectionClick
  • 動畫:CourseScaffold/ScoreScaffold/HomePageScaffold 加 AnimatedSwitcher(300ms)
  • i18n 拼字修正("Change sucees"→"success" 等)

成績功能

  • GPA 4.3 計算(ScoreAnalysis 新增 scoreToGradePoint/gpa/gradeDistribution)
  • ScoreGPACard widget:GPA 值 + 進度條 + 等第 badge + 每科對照表

自訂課程

  • CustomCourseData(ap_common_core):CRUD + SharedPreferences 持久化
  • CourseData.mergeCustom():API 課程 + 自訂課程合併
  • CourseEditSheet(bottom sheet):名稱/教師/教室/學分/顏色選擇/時段 grid(衝突偵測)
  • CourseScaffold 空格顯示 +、CourseContent 加編輯/刪除按鈕

首頁 Dashboard

  • HomePageScaffold 新增 dashboardWidgets 參數(輪播 + 下方可捲動 dashboard)
  • QuickInfoRow、TodayScheduleCard widget
  • 響應式輪播高度(clamp(150, 300)),iPhone SE 相容

原生小工具(ap_common_plugin,Android + iOS 雙平台)

Widget Android iOS
上課提醒 3×1 Glance small/medium/lock
學期課表 4×3 Glance medium/large/XL
今日課表 4×2 Glance medium/large
上課倒數 2×2 Glance small/circular
學生證 4×2 Glance medium

待處理

  • 成績計算差異:通過/不通過、等第制、抵免課程;研究所及格線應為 70;平均分數未加權學分
  • slang code gen:需跑 dart run slang 重新產生 .g.dart
  • build_runner:CustomCourseData 用 plain Dart(非 freezed),考慮是否遷移
  • Widget barcode:Android 用 ZXing (Code39)、iOS 用 CoreImage (Code128),格式不一致
  • CI 驗證:跑 melos run analyze-ci / melos run test

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions