feat(music): now-playing, mini-player, queue and lyrics UI

Persistent mini-player over the profile navigator (route-aware
suppression, bottom-bar inset), slide-up now-playing screen with
mobile/desktop/TV layouts (blurred-art background, pause shape morphs,
dpad seek chain), queue sheet with reorder/remove/jump, synced lyrics
view, TV rail now-playing item, sleep timer, and audio playlist
playback. Adds download affordances on music surfaces.
This commit is contained in:
edde746
2026-07-05 21:50:11 +02:00
parent 422db75b5b
commit 7d6a747aa7
24 changed files with 3069 additions and 217 deletions
+17
View File
@@ -79,4 +79,21 @@ class FocusTheme {
color: isFocused ? Colors.white.withValues(alpha: 0.2) : Colors.transparent,
);
}
/// Focus background fill derived from the theme's text color, so it stays
/// visible on BOTH light and dark surfaces — the white-based
/// [focusBackgroundDecoration] disappears on light ones. This is the mono
/// convention used by [TrackRow], the navigation rail, and the music player
/// surfaces. Prefer this for any new mono-themed surface.
static BoxDecoration textFillFocusDecoration(
BuildContext context, {
required bool isFocused,
double borderRadius = defaultBorderRadius,
BorderRadius? radii,
}) {
return BoxDecoration(
borderRadius: radii ?? BorderRadius.circular(borderRadius),
color: isFocused ? tokens(context).text.withValues(alpha: 0.12) : Colors.transparent,
);
}
}