From 672a545c3804e61b4eb47aa92f8e96b86a18a601 Mon Sep 17 00:00:00 2001 From: lxh2875931338 Date: Sat, 24 Oct 2026 21:44:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=E6=94=B6=E8=97=8F=E9=A1=B9?= =?UTF-8?q?=E6=97=A0=E5=85=83=E6=95=B0=E6=8D=AE=E6=97=B6=EF=BC=8C=E5=89=AF?= =?UTF-8?q?=E6=A0=87=E9=A2=98=E6=98=BE=E7=A4=BA=E4=B8=8A=E7=BA=A7=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=A4=B9=E5=90=8D=EF=BC=88=E5=B8=A6=E6=8B=AC=E5=8F=B7?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前无标签时副标题固定写"收藏",和"歌手"语义混在一起。 现在取 path 的上一级目录(解码后)显示为 "(B-未分类)" 这种形式: - 括号清楚表明是目录,不是艺术家 - 有标签时仍优先显示艺术家 - 目录层级不足或解码失败时回退为空(displaySubtitle 兜底"未知艺术家") 真机验证:收藏项显示 "13楼的大笨象 - 郑融" / "(B-未分类)"。 --- lib/pages/home_page.dart | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart index 678676e..8169aac 100644 --- a/lib/pages/home_page.dart +++ b/lib/pages/home_page.dart @@ -35,11 +35,10 @@ class SongItem { : fileName.replaceAll(RegExp(r'\.[^.]*$'), ''); String get displaySubtitle { - if (metadataState == 'success' && artist != null) { + if (metadataState == 'success' && artist != null && artist!.isNotEmpty) { return artist!; - } else { - return sourceTag; } + return sourceTag.isNotEmpty ? sourceTag : '未知艺术家'; } } @@ -272,12 +271,23 @@ class _HomePageState extends BaseState { displayName = rawName; } + // 取上级目录名,作为没有标签时的副标题(加括号区分"这是文件夹") + final segments = path.split('/').where((s) => s.isNotEmpty).toList(); + String folderName = ''; + if (segments.length >= 2) { + try { + folderName = Uri.decodeComponent(segments[segments.length - 2]); + } catch (_) { + folderName = segments[segments.length - 2]; + } + } + items.add(SongItem( path: path, fileName: displayName, title: hasTitle ? title : null, artist: artist.isNotEmpty ? artist : null, - sourceTag: '收藏', + sourceTag: folderName.isNotEmpty ? '($folderName)' : '', metadataState: hasTitle ? 'success' : 'unknown', )); }