Skip to content

feat: 新增 Liquid Glass 整合套件 (ap_common_liquid_glass) #169

Description

@abc873693

概述

新增選用套件 ap_common_liquid_glass,將所有現有 Scaffold 與 UI 元件包裝為 Liquid Glass 風格。此套件作為 ap_common_flutter_ui 的上層,下游 App 只需替換 Widget 名稱即可採用玻璃質感外觀(例如 HomePageScaffoldGlassHomePageScaffold)。

架構設計

  • 新套件packages/ap_common_liquid_glass/
  • 依賴liquid_glass_widgets: ^0.7.0
  • 原則:組合優於複製——重用原有 Scaffold 邏輯,僅替換外觀層(AppBar、NavigationBar、FAB、Card 等)
ap_common_flutter_ui (Material 3,不依賴 glass)
  └─ ap_common_liquid_glass (選用的玻璃質感層)
       └─ liquid_glass_widgets ^0.7.0

範圍

Scaffold(6 個玻璃質感包裝)

  • GlassHomePageScaffold
  • GlassLoginScaffold
  • GlassCourseScaffold
  • GlassScoreScaffold
  • GlassUserInfoScaffold
  • GlassImageViewerScaffold

Widget

  • GlassApDrawer
  • GlassYesNoDialog / GlassDefaultDialog

便利頁面

  • GlassApLoginPage
  • GlassApCoursePage
  • GlassApScorePage

App 進入點

  • LiquidGlassApApp — 與 ApApp 相同 API,額外支援 qualityglassSettings 參數

待辦事項

  • 執行 flutter pub get + dart analyze,修正所有對 liquid_glass_widgets API 的編譯錯誤
  • GlassThemeBridge — 將 ApTheme.seedColor 對應到玻璃色調(目前回傳預設值)
  • GlassBottomBar — 將首頁 Scaffold 的 Material NavigationBar 替換為 GlassBottomBar
  • CourseScaffold / ScoreScaffold 深度整合 — 抽出 body builder,將 AppBar/FAB/Card 替換為玻璃質感元件
  • UserInfoScaffold — 設計自訂玻璃質感 Header(SliverAppBar 無對應的 glass 元件)
  • AboutUsPage 玻璃質感版本 — 尚未建立
  • 範例 App — 在 apps/example/ 新增玻璃質感 demo 頁面
  • Widget 測試 — 至少對每個 glass scaffold 做 smoke test 確認能正常渲染

使用範例

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await LiquidGlassWidgets.initialize();
  runApp(const MyApp());
}

// 將 ApApp 替換為 LiquidGlassApApp
LiquidGlassApApp(
  home: GlassHomePage(),
  quality: GlassQuality.standard,
)

備註

  • liquid_glass_widgets 尚未到 1.0 版,API 可能會變動
  • 遵循系統的「減少動態效果」/「降低透明度」設定(WCAG 無障礙)
  • 完整規格書:packages/ap_common_liquid_glass/LIQUID_GLASS_SPEC.md

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