diff --git a/flutter_client/lib/library/widgets/compact_track_card.dart b/flutter_client/lib/library/widgets/compact_track_card.dart index 5557b1eb..4e53d7b3 100644 --- a/flutter_client/lib/library/widgets/compact_track_card.dart +++ b/flutter_client/lib/library/widgets/compact_track_card.dart @@ -4,6 +4,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../models/track.dart'; import '../../player/player_provider.dart'; import '../../shared/widgets/server_image.dart'; +import '../../shared/widgets/track_actions/track_actions_button.dart'; import '../../theme/theme_extension.dart'; /// Small horizontal track cell used by the home Most-played section. @@ -74,6 +75,7 @@ class CompactTrackCard extends ConsumerWidget { ], ), ), + TrackActionsButton(track: track), ]), ), ), diff --git a/flutter_client/lib/player/now_playing_screen.dart b/flutter_client/lib/player/now_playing_screen.dart index 93e48614..db9db86e 100644 --- a/flutter_client/lib/player/now_playing_screen.dart +++ b/flutter_client/lib/player/now_playing_screen.dart @@ -2,6 +2,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; +import '../models/track.dart'; +import '../shared/widgets/track_actions/track_actions_button.dart'; import '../theme/theme_extension.dart'; import 'player_provider.dart'; @@ -46,7 +48,28 @@ class NowPlayingScreen extends ConsumerWidget { width: 280, height: 280, color: fs.slate, ), const SizedBox(height: 24), - Text(media.title, style: TextStyle(color: fs.parchment, fontSize: 22)), + Row(mainAxisAlignment: MainAxisAlignment.center, children: [ + Flexible( + child: Text( + media.title, + style: TextStyle(color: fs.parchment, fontSize: 22), + overflow: TextOverflow.ellipsis, + ), + ), + TrackActionsButton( + track: TrackRef( + id: media.id, + title: media.title, + albumId: (media.extras?['album_id'] as String?) ?? '', + albumTitle: media.album ?? '', + artistId: '', // not stashed in MediaItem.extras today + artistName: media.artist ?? '', + durationSec: media.duration?.inSeconds ?? 0, + streamUrl: '', + ), + hideQueueActions: true, + ), + ]), Text(media.artist ?? '', style: TextStyle(color: fs.ash, fontSize: 14)), const SizedBox(height: 16), Slider( diff --git a/flutter_client/lib/playlists/playlist_detail_screen.dart b/flutter_client/lib/playlists/playlist_detail_screen.dart index dfcf6c22..d5220c14 100644 --- a/flutter_client/lib/playlists/playlist_detail_screen.dart +++ b/flutter_client/lib/playlists/playlist_detail_screen.dart @@ -5,6 +5,7 @@ import 'package:go_router/go_router.dart'; import '../models/playlist.dart'; import '../models/track.dart'; import '../player/player_provider.dart'; +import '../shared/widgets/track_actions/track_actions_button.dart'; import '../theme/theme_extension.dart'; import 'playlists_provider.dart'; @@ -184,6 +185,8 @@ class _PlaylistTrackRow extends StatelessWidget { ), ), Text('$mins:$secs', style: TextStyle(color: fs.ash, fontSize: 12)), + if (row.trackId != null) + TrackActionsButton(track: _toTrackRef(row)), ]), ), );