fix(android): NowPlaying action row above the scrubber for Flutter parity

Flutter's _SecondaryControls (like, shuffle, repeat, queue, kebab) sit just above the seek bar (now_playing_screen.dart:464); Android had them at the bottom under the transport row. Reorder the NowPlayingBody column so it reads cover -> title -> actions -> scrubber -> transport, matching Flutter.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-30 02:32:25 -04:00
parent ee6305f525
commit b71f9c239e
@@ -227,6 +227,21 @@ private fun NowPlayingBody(
Spacer(Modifier.height(24.dp))
TrackHeader(title = track.title, artist = track.artistName, album = track.albumTitle)
Spacer(Modifier.height(24.dp))
// Action row (like, shuffle, repeat, queue, kebab) sits ABOVE the
// scrubber — Flutter's _SecondaryControls placement
// (now_playing_screen.dart:464). Android previously had it below
// the transport row.
BottomActionsRow(
navController = navController,
track = track,
shuffleEnabled = state.shuffleEnabled,
repeatMode = state.repeatMode,
isLiked = isLiked,
onToggleLike = { trackActionsViewModel.toggleLike(track.id, isLiked) },
onToggleShuffle = viewModel::toggleShuffle,
onCycleRepeat = viewModel::cycleRepeat,
)
Spacer(Modifier.height(8.dp))
ScrubberRow(
positionMs = state.positionMs,
durationMs = state.durationMs,
@@ -239,17 +254,6 @@ private fun NowPlayingBody(
onPlayPause = { if (state.isPlaying) viewModel.pause() else viewModel.play() },
onNext = viewModel::skipToNext,
)
Spacer(Modifier.height(16.dp))
BottomActionsRow(
navController = navController,
track = track,
shuffleEnabled = state.shuffleEnabled,
repeatMode = state.repeatMode,
isLiked = isLiked,
onToggleLike = { trackActionsViewModel.toggleLike(track.id, isLiked) },
onToggleShuffle = viewModel::toggleShuffle,
onCycleRepeat = viewModel::cycleRepeat,
)
}
}