Skip to content

refactor(theme): 明 / 暗判定收进 AppPalette.isDark - #11

Merged
SpringHgui merged 1 commit into
masterfrom
refactor/theme-is-dark
Oct 29, 2026
Merged

SpringHgui merged 1 commit into
masterfrom
refactor/theme-is-dark

Conversation

@SpringHgui

Copy link
Copy Markdown
Owner

纯重构,不改任何观感:把「按 background 亮度 < 0.5 判暗」这条口径收进 AppPalette.isDark。

原来它抄了 9 份:

位置 写法
app_theme.dart → toDesktopTokens() background.computeLuminance() > 0.5(取反)
about_dialog.dart final dark = t.background.computeLuminance() < 0.5
query_page / object_panel / 六个设计器页 final isDark = t.background.computeLuminance() < 0.5

about_dialog 的注释里原本写着「判据跟查询页 / 对象面板一致」——那是靠人记的约定,不是约束,改阈值或换判据时必然漏。

改动

  • AppPalette.isDark getter(阈值与判据逐字不变,仍是 background.computeLuminance() < 0.5)
  • 9 处调用点改为取 getter;toDesktopTokens() 里变成 final light = !isDark;,面色分支与判定强制同源
  • test/theme_palette_test.dart 补一组用例:内置两套色板各归一边;判据跟底色走、不跟 ThemeMode 走(主题定制能把「明亮」调成深底,走 Theme.of(brightness) 的实现会判错);toDesktopTokens().buttonFaceColor 与 isDark 同向

Test plan

  • CI:flutter analyze 无 issue、flutter test 全绿
  • 人工确认观感零变化:明 / 暗两个主题下按钮面色、GitHub 品牌图标提亮档、SQL 高亮配色、对象面板 108 项

与 #10 的关系

两个 PR 都会碰 query_page 等文件的同一区域,后合的那个需要 rebase:#10 新增的 lib/theme/sql_highlight.dart 里也写了一遍同样的判据(palette.background.computeLuminance() < 0.5),届时改成 palette.isDark。建议先合 #10(功能),再让本分支 rebase 后收掉那一处。

「按 background 亮度 < 0.5 判暗」这条在仓里抄了 9 份:toDesktopTokens 里一份
取反、about_dialog 一份、查询页 / 对象面板 / 六个设计器各一份。about_dialog
的注释还写着「判据跟查询页 / 对象面板一致」——那是靠人记的约定,不是约束。

收成一个 getter,并补用例钉住「跟底色走、不跟 ThemeMode 走」:主题定制能把
「明亮」调成深底,走 Theme.of(brightness) 的实现会当场判错。
@SpringHgui
SpringHgui force-pushed the refactor/theme-is-dark branch from 0fab6d1 to 3772cfd Compare October 29, 2026 06:32
@SpringHgui
SpringHgui merged commit 92cd60f into master Oct 29, 2026
1 check passed
@SpringHgui
SpringHgui deleted the refactor/theme-is-dark branch October 29, 2026 07:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant