Skip to content

feat(曲库): 详情页封面放大到 240 并与返回箭头对齐,多选改成右键批量 - #51

Merged
Linecos merged 4 commits into
Linecos:mainfrom
starry688:feat/detail-cover-and-selection
Nov 6, 2026
Merged

Linecos merged 4 commits into
Linecos:mainfrom
starry688:feat/detail-cover-and-selection

Conversation

@starry688

Copy link
Copy Markdown
Contributor

改了什么

一、详情页头部封面 128 → 240(专辑 / 艺术家 / 歌单三处),左缘往右让 16px,与上方返回箭头的图形左缘齐平。

  • 封面:128 → 240,圆角 32、与文字的间距 24、标题字号、对齐方式全部保持原样
  • 艺术家头像里的字母、歌单没有封面时的占位图标,按同一比例放大(240 × 0.22 / × 0.36)
  • 16 这个数是量出来的:返回键的 Icon 盒子相对行首内缩 12,箭头图形在 24 的图标里再留 3,取 16 与图形左缘差 1px,肉眼齐平

二、多选撤掉常驻工具条,动作改到右键菜单并支持整批。

  • 删掉「已选 N 首 / 全选 / 播放所选 / 加入队列 / 收藏所选 / 加入歌单 / 计算 ReplayGain / 隐藏所选」那一排
  • 勾选多首后在勾选行上点右键,菜单对整批生效并标出数量:「隐藏所选 12 首」「加入歌单(12 首)…」
  • 右键落在未勾选的行上仍是单曲语义,不会误伤已选
  • 「在资源管理器显示 / 复制文件路径 / 用 MusicTag 打开」是单文件操作,批量时整组不出现
  • 歌单详情里批量项变成「从歌单移除 N 首」(走 removeTracksFromPlaylist,不动曲库)
  • 原来工具条里的「计算 ReplayGain」右键菜单没有,这次补上了,单首与批量都可用
  • 一键全选移到表头复选框(部分勾选显示半选态),标题行只留「已选 N 首」

为什么

封面:128 那一档在 1180 宽的窗口里只有巴掌大,标题和统计挤在旁边像附录注释。我先试了 360,1440×900 下头部吃掉 420,列表只剩不到 300 高——太挤,最后取 240:够大、列表还留得住。左缘原本比返回箭头靠左 15px,放大之后这条错位更显眼,顺手对齐到箭头的竖线上(三处共用 _detailHeaderInset,改一处全生效)。

多选:那排按钮常驻占位,但实际是低频操作,还把工具条撑得很长。更要紧的是——原来多选之后右键只对点到的那一首生效,勾了 20 首点右键「隐藏」只隐藏 1 首。工具条一撤,这个陷阱就成了唯一入口,所以顺手把右键改成按勾选批量。

影响范围

  • Rust:rust/src/api/{db,scan,player}.rs、rust/src/bass.rs
  • Flutter 界面:lib/src/features/library/
  • 应用外壳 / 主题 / 路由
  • 构建、CI、脚本、文档

自查

  • .\scripts\check.ps1 通过(六项全绿)
  • 本地实际渲染核对:详情页 240 的排版、以及批量右键菜单的措辞(长措辞在 256px 的菜单宽里会溢出,PopupMenuText 已改成 Flexible + ellipsis)
  • 新增逻辑带了测试:library_selection_test 重写成右键驱动(含「未勾选的行右键仍只作用单曲」)、library_replay_gain_test 4 条跟着改、library_collections_test 的封面尺寸断言改成 detailCoverSize
  • 没有手改生成代码;未改 Rust API,无需重跑 flutter_rust_bridge_codegen generate
  • 没有改动依赖

给 reviewer 的备注

  • 一个 PR 两个主题(封面尺寸 / 多选交互)。文件重叠在 albums_section / artists_section / playlists_section(两件事都改了头部),拆开会有依赖,所以合成一个提交;要拆我可以按 hunk 分。
  • 列表 ↔ 详情的 180ms 淡入上滑过场没动,library_collections_test 里那三条「…列表与详情之间有淡入上滑的过场」都还在跑。
  • _headerIconButton 只被工具条用过,随工具条一起删了。
  • 播放岛(底部进度条)没动;「下一首播放」的批量实现是倒序 insertNext,保证插入顺序与列表一致。

@starry688
starry688 requested a review from Linecos as a code owner November 6, 2026 14:43
详情页(专辑 / 艺术家 / 歌单)头部封面从 128 放到 240,左缘往右让 16px
与上方返回箭头的图形左缘齐平(原来比箭头靠左一截);其余不动:标题字号、
对齐方式、圆角 32、与文字的间距 24、列表 ↔ 详情的 180ms 淡入上滑过场都保持
原样。艺术家头像的字母与歌单没有封面时的占位图标按同一比例放大。

多选那排常驻工具条撤掉:播放所选 / 加入队列 / 收藏 / 加入歌单 / 计算
ReplayGain / 隐藏全部改成右键菜单,勾选多首后在勾选行上点右键即对整批
生效并标出数量;单文件操作(资源管理器 / 复制路径 / MusicTag)批量时不出现。
一键全选移到表头复选框,标题行只留「已选 N 首」。
封面放大到 240 之后,右侧三行信息顶对齐会留下右上半截空白、看着像浮在半空;
改成 CrossAxisAlignment.end,标题 / 统计 / 播放键(歌单还有那一排操作键)与
封面底边对齐。三个详情页一起改,和参考图里的大封面头部同一个观感。
添加音乐 / 导出 / 重命名 / 删除歌单改成 40×40 的图标键(tonal、描边、
描边红三种语义不变),功能名放进悬停 tooltip;「播放全部」仍带文字。
五个带文字的按钮在歌单名较长时会把头部挤成两行,这四个又都是低频操作。

形状用最朴素的 IconButton + styleFrom 指定圆角 12:.outlined / .filledTonal
两个变体自带 CircleBorder,会把传进来的 shape 盖掉,渲染出来是圆的。
@Linecos
Linecos force-pushed the feat/detail-cover-and-selection branch from c1b37bf to 279baea Compare November 6, 2026 15:59
@Linecos
Linecos merged commit 050dd50 into Linecos:main Nov 6, 2026
4 checks passed
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.

2 participants