name: university_timetable
description: 轻屿课表应用 - 支持小米超级岛
publish_to: 'none'
version: 2.1.3-1+136
repository: https://github.com/Mutx163/mikcb
homepage: https://github.com/Mutx163/mikcb
issue_tracker: https://github.com/Mutx163/mikcb/issues
license: GPL-3.0-or-later
environment:
sdk: ">=3.12.2 <4.0.0"
flutter: ">=3.44.2"
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
provider: ^6.1.1
shared_preferences: ^2.2.2
intl: ^0.20.2
uuid: ^4.6.0
cupertino_icons: ^1.0.8
file_picker: ^11.0.3
http: ^1.2.2
package_info_plus: ^9.0.1
# 天气「使用当前位置」用。国行设备没装 Google Play Services 时,插件会自己
# 回退到系统 LocationManager,所以无需 GMS、也不必设 forceLocationManager。
# 反查地名不走这个包(它不提供),走 BigDataCloud,见 device_location_service.dart。
#
# 约束写 ^14.0.0 而不是 ^14.0.3:14.0.3 要求 geolocator_linux ^0.2.6,后者要求
# package_info_plus ^10.0.0,而本项目锁在 ^9.0.1——升级 package_info_plus 会连带
# 10.2.0 的 Android Gradle/Kotlin 构建改动,与本功能无关且我这边没法验证构建。
# 写 ^14.0.0 让 pub 自己回退:实测解析到 geolocator 14.0.2 + geolocator_linux 0.2.4
# (后者兼容 package_info_plus 9)。将来 package_info_plus 升上去后,这个约束会
# 自动解析到更新的 geolocator,不必再改。
geolocator: ^14.0.0
share_plus: ^12.0.2
crypto: ^3.0.6
webdav_plus: ^1.2.2
url_launcher: ^6.3.1
path_provider: ^2.1.5
open_filex: ^4.7.0
flutter_markdown: ^0.7.7+1
flutter_secure_storage: ^10.3.1
webview_flutter: 4.14.1
webview_flutter_android: 4.13.0
azlistview: ^2.0.0
animations: ^2.0.11
table_parser: ^1.0.1
qr: ^3.0.2
qr_flutter: ^4.1.0
fl_chart: ^1.2.0
fast_gbk: ^1.0.0
flutter_svg: ^2.3.0
image: ^4.8.0
# 2026-09-13:由 fork(1.0.11 / commit 241bbea)切到上游 pub.dev 版 1.2.0。
# 依据:fork 的本地补丁已分别并入上游 1.1.0(系统字重与标题字重 API)与
# 1.1.1(pubspec Git 依赖在中文 Windows 下的编码修复);1.2.0 的 HyperOS 4
# 玻璃组件按上游 CHANGELOG 为「可选、与旧组件并存、不改动既有组件默认表现、
# 原有界面样式零变化」,属纯新增,升级面安全。
flutter_miuix: ^1.2.0
flutter_blackbox: ^0.7.0
fountain_codes: ^1.0.0
mobile_scanner: ^7.4.0
image_picker: ^1.2.3
# 顶栏渐进模糊(Inspire Blur):自定义 GPU shader 的变量模糊,
# 用于顶栏玻璃带「上浓下淡」的渐进过渡(见 lib/ui/hyperos/inspire/)。
inspire_blur: ^0.4.1
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^6.0.0
fake_async: ^1.3.3
# 覆盖:指向 fork 上带注入点补丁的 flutter_miuix(glassy-surface 分支,基于上游 1.2.0)。
# 补丁都是「把面板材质 / 蒙层 / 让位手感让给调用方」的注入点:
# · 弹层族(popup presenter / 列表弹层等)已有的 `surfaceBuilder`;
# · 底部弹窗 `MiuixOverlayBottomSheet` / `MiuixWindowBottomSheet` 上的
# `surfaceBuilder`(child 是真实面板内容)+ `scrimUnderlay`(覆盖层里、压暗蒙层
# 之前的前置层,覆盖层随之进 `BackdropGroup`)+ `dimColor`;
# · 弹层让位缩放(`stacked`)的手感与几何:`stackDuration` / `stackCurve` 换掉
# 包内那条参数写死的让位弹簧;`stackShrinkFromAnchor` 把支点取到「离锚点最近
# 的那个面板角」(朝锚点方向退让,而不是以面板中心);`stackPivotBounds` 把
# 支点钉到任意矩形(传一个零尺寸矩形就是「钉到某个点」);`stackScalesPanel`
# 让让位只缩内容、卡片轮廓原地不动 —— **这条被用户否掉过**(「为什么他妈的
# 卡片没缩,内容缩放了」),当前**无调用方**,留着只为记录那条路走不通。
# · 二级面板(`MiuixGlassSecondaryPopup`)也开放同一族让位开关:上游只让一级
# (`MiuixGlassTransformPopup`)参与让位、二级原地不动,两块同宽同边的面板
# 叠在一起时,缩过的那块左边缘会比二级多退 5% 板宽(200 宽上 10px)。
# 2026-09-20 曾用它把两块钉到同一支点一起缩来消这条缝,2026-09-21 用户否掉
# (二级的行文字跟着小 5%,被点那一行也跟着挪),改回「只有一级缩」,**这条缝
# 由用户拍板接受**。所以二级这一族参数目前在本仓**没有调用方**(留着是因为
# 缺省行为与打补丁前逐字相同,删它要再动一次 pin 的 SHA,收益为零)。
# · `stackLocksInput` 把让位拆成两件事:**视觉退让** 与 **让出输入**(内容命中 /
# 焦点 / 返回键 / 遮罩关窗)。默认 true = 上游原行为(被压在下面那块连输入一起
# 让出);只想借让位变换消接缝、输入仍归自己的那块传 false。
# · 出生即带 `stacked` 的弹层,让位进度直接落在目标值(`initState` 赋初值)——
# `didUpdateWidget` 只在 `stacked` **变化**时驱动,按需挂载的二级面板挂上那
# 一刻让位就已经成立,不补这一刀会「传了 stacked 却没缩」。
# 课程弹窗(通栏底部弹窗)用它们把面板换成本仓液态玻璃,并让玻璃采到未压暗的页面;
# 用法与理由见 lib/ui/hyperos/miuix_bottom_sheet.dart;首页菜单的让位手感与几何见
# lib/widgets/home_top_menu_popup.dart(一级向右退让、二级不参与让位)。
# **固定到 commit,不要写分支名** —— 分支名会让不同时间 / 不同机器解析到不同的那份,
# CI 也拿不到可复现的依赖。补丁进了上游 release 后整块删掉,即回到 pub.dev。
dependency_overrides:
flutter_miuix:
# 包含「让位缩放改为面板布局矩形朝支点缩小,玻璃按缩后尺寸画」与
# 「二级面板边缘高光/阴影随开合渐显」两个补丁(paint 变变换带不动
# BackdropFilter,所以缩放必须落在布局矩形上)。
git:
url: https://github.com/Mutx163/flutter_miuix.git
ref: 574a23404fcde4d94f8ac0bc513b6ca0f6351a80
# inspire_blur:分布图像素记忆化——上游每个新挂载的顶栏都同步重算一张
# 674k 像素的分布图(真机实测 36~49ms),这里按 (distribution, size) 记住像素。
# fork 自 inspirestack/inspire_blur,分支 mikcb/distribution-pixels-cache,
# 基线 tag v0.4.1(a44d40c);改补丁请改 C:/cursor/inspire_blur 那份克隆。
# 全部理由与删除清单见 test/architecture/inspire_blur_patch_test.dart。
inspire_blur:
git:
url: https://github.com/Mutx163/inspire_blur.git
ref: 6247f025b5b6fdb8700d3f6e2728bef04b658d3d
flutter:
uses-material-design: true
generate: true
# 课程卡片「液态玻璃」档的着色器:在共享的预模糊壁纸上做圆角 SDF 边缘折射 +
# 染色 + 边缘高光。一份纹理全部卡片共用,没有离屏与回读,见 shaders/ 里的注释。
# 加载失败(或后端不支持)时卡片回落「高斯磨砂」外观,不会破相。
shaders:
- shaders/course_card_glass.frag
# 全局「液态玻璃」表面(弹层 / 顶栏 / 玻璃坞…)的着色器:当 `ImageFilter`
# 用(BackdropFilter 的滤镜输入即实时背景),折射数学与卡片那份同源。
# 加载失败时各表面回落自己既有的基础材质,不会破相。
- shaders/glass_surface_refraction.frag
assets:
- assets/branding/
- assets/donate/
- assets/holidays/
- docs/releases/
- assets/lan_edit/
- assets/templates/