From a10aeb76ee9e642992b3719d4fb91cc6f0d76c9e Mon Sep 17 00:00:00 2001 From: zarzet Date: Mon, 13 Jul 2026 21:40:54 +0700 Subject: [PATCH] fix(ui): match loading-header placeholder heights to the loaded rows The subtitle/meta placeholders were shorter than the real artist and meta rows, so the cover shifted ~12px during the loading-to-content crossfade and read as a ghosted double image. --- lib/screens/home_tab_widgets.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/screens/home_tab_widgets.dart b/lib/screens/home_tab_widgets.dart index 56eba353..c8732cea 100644 --- a/lib/screens/home_tab_widgets.dart +++ b/lib/screens/home_tab_widgets.dart @@ -1009,13 +1009,14 @@ class _AlbumLoadingScaffoldState extends State<_AlbumLoadingScaffold> heroTag: widget.heroTag, background: cover(), coverBuilder: (context, coverSize) => cover(), - // Placeholder rows sized like the loaded header's subtitle, meta, - // and action rows so the cover barely shifts when content lands. + // Placeholder rows sized like the loaded header's subtitle + // (16pt artist text ≈ 22px), meta (13pt row ≈ 18px), and 48px + // action row, so the cover doesn't shift when content lands. subtitle: const ShimmerLoading( - child: SkeletonBox(width: 120, height: 16, borderRadius: 4), + child: SkeletonBox(width: 120, height: 22, borderRadius: 4), ), meta: const ShimmerLoading( - child: SkeletonBox(width: 150, height: 14, borderRadius: 6), + child: SkeletonBox(width: 150, height: 18, borderRadius: 6), ), actions: const ShimmerLoading( child: SkeletonBox(width: 220, height: 48, borderRadius: 24),