From 888ea3fd54bca73311eff2f16c48d504a7bb1a0b Mon Sep 17 00:00:00 2001 From: lxh2875931338 Date: Sat, 31 Oct 2026 22:05:44 +0800 Subject: [PATCH] =?UTF-8?q?style(ui):=20=E5=88=97=E8=A1=A8=E8=A1=8C?= =?UTF-8?q?=E8=B7=9D=E6=94=B6=E7=B4=A7=20+=20=E6=94=B6=E8=97=8F=E9=A1=B9?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=B0=81=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 收藏列表:vertical padding 6 -> 2,ListTile 用 compact, 标题 17->16、副标题 14->13,行高明显变紧凑 - 收藏项 leading 从音符图标换成 SongArtwork(复用 songs.artwork_path) - WebDAV 文件列表:contentPadding 去掉 vertical 2,加 compact 真机截图确认:行距更接近设计稿,有元数据的歌显示封面。 --- lib/pages/home_page.dart | 21 ++++++++++++++------- lib/pages/webdav_file_list_page.dart | 6 ++++-- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart index ef554b1..837d411 100644 --- a/lib/pages/home_page.dart +++ b/lib/pages/home_page.dart @@ -6,6 +6,7 @@ import '../widgets/magnetic_scroll_physics.dart'; import 'webdav_setup_page.dart'; import 'settings_page.dart'; import '../database/song_database.dart'; +import '../widgets/song_artwork.dart'; import 'webdav_file_list_page.dart'; import '../constants/ui_constants.dart'; import '../base/base_state.dart'; @@ -18,6 +19,7 @@ class SongItem { final String fileName; final String? title; final String? artist; + final String? artworkPath; final String sourceTag; final String metadataState; @@ -26,6 +28,7 @@ class SongItem { required this.fileName, this.title, this.artist, + this.artworkPath, required this.sourceTag, this.metadataState = 'unknown', }); @@ -287,6 +290,9 @@ class _HomePageState extends BaseState { fileName: displayName, title: hasTitle ? title : null, artist: artist.isNotEmpty ? artist : null, + artworkPath: (row?['artwork_path'] as String?)?.trim().isNotEmpty == true + ? (row!['artwork_path'] as String).trim() + : null, sourceTag: folderName.isNotEmpty ? '($folderName)' : '', metadataState: hasTitle ? 'success' : 'unknown', )); @@ -771,18 +777,19 @@ class _HomePageState extends BaseState { duration: const Duration(milliseconds: 150), child: Padding( padding: const EdgeInsets.symmetric( - vertical: 6), + vertical: 2), child: ListTile( contentPadding: EdgeInsets.zero, - leading: const Icon( - Icons.music_note, - color: Colors.white38, - size: 20, + visualDensity: VisualDensity.compact, + leading: SongArtwork( + filePath: song.artworkPath, + size: 44, + fallbackIcon: Icons.music_note, ), title: Text( song.displayTitle, style: const TextStyle( - fontSize: 17, + fontSize: 16, fontWeight: FontWeight.w400, color: Colors.white, ), @@ -792,7 +799,7 @@ class _HomePageState extends BaseState { subtitle: Text( song.displaySubtitle, style: TextStyle( - fontSize: 14, + fontSize: 13, color: Colors.grey[400], ), maxLines: 1, diff --git a/lib/pages/webdav_file_list_page.dart b/lib/pages/webdav_file_list_page.dart index 0c72220..c6356e3 100644 --- a/lib/pages/webdav_file_list_page.dart +++ b/lib/pages/webdav_file_list_page.dart @@ -351,7 +351,8 @@ class _WebDAVFileListPageState extends BaseState { if (item.isDirectory) { return ListTile( - contentPadding: const EdgeInsets.symmetric(horizontal: 4, vertical: 2), + contentPadding: const EdgeInsets.symmetric(horizontal: 4), + visualDensity: VisualDensity.compact, leading: const Icon( Icons.folder_outlined, color: Color(0xFFB8D4D0), @@ -397,7 +398,8 @@ class _WebDAVFileListPageState extends BaseState { ].join(' · '); return ListTile( - contentPadding: const EdgeInsets.symmetric(horizontal: 4, vertical: 2), + contentPadding: const EdgeInsets.symmetric(horizontal: 4), + visualDensity: VisualDensity.compact, leading: SongArtwork( filePath: meta?['artwork_path'] as String?, size: 44,