Player download & like button alignment fix

This commit is contained in:
Kingkor Roy Tirtho 2022-01-24 19:19:53 +06:00
parent 5b855e1e55
commit 2c5e848fbc
2 changed files with 47 additions and 32 deletions

View File

@ -245,6 +245,7 @@ class _PlayerState extends State<Player> with WidgetsBindingObserver {
), ),
artistsToClickableArtists( artistsToClickableArtists(
playback.currentTrack?.artists ?? [], playback.currentTrack?.artists ?? [],
mainAxisAlignment: MainAxisAlignment.center,
) )
], ],
), ),
@ -339,42 +340,15 @@ class _PlayerState extends State<Player> with WidgetsBindingObserver {
}, },
), ),
), ),
DownloadTrackButton(
track: playback.currentTrack,
),
// add to saved tracks // add to saved tracks
Expanded( Expanded(
flex: 1, flex: 1,
child: Wrap( child: Wrap(
crossAxisAlignment: WrapCrossAlignment.center, alignment: WrapAlignment.center,
runAlignment: WrapAlignment.center,
children: [ children: [
Consumer<SpotifyDI>(builder: (context, data, widget) { Container(
return FutureBuilder<bool>( height: 20,
future: playback.currentTrack?.id != null
? data.spotifyApi.tracks.me
.containsOne(playback.currentTrack!.id!)
: Future.value(false),
initialData: false,
builder: (context, snapshot) {
bool isLiked = snapshot.data ?? false;
return IconButton(
icon: Icon(
!isLiked
? Icons.favorite_outline_rounded
: Icons.favorite_rounded,
color: isLiked ? Colors.green : null,
),
onPressed: () {
if (!isLiked &&
playback.currentTrack?.id != null) {
data.spotifyApi.tracks.me
.saveOne(playback.currentTrack!.id!)
.then((value) => setState(() {}));
}
});
});
}),
ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 200), constraints: const BoxConstraints(maxWidth: 200),
child: Slider.adaptive( child: Slider.adaptive(
value: _volume, value: _volume,
@ -392,6 +366,41 @@ class _PlayerState extends State<Player> with WidgetsBindingObserver {
}, },
), ),
), ),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
DownloadTrackButton(
track: playback.currentTrack,
),
Consumer<SpotifyDI>(builder: (context, data, widget) {
return FutureBuilder<bool>(
future: playback.currentTrack?.id != null
? data.spotifyApi.tracks.me
.containsOne(playback.currentTrack!.id!)
: Future.value(false),
initialData: false,
builder: (context, snapshot) {
bool isLiked = snapshot.data ?? false;
return IconButton(
icon: Icon(
!isLiked
? Icons.favorite_outline_rounded
: Icons.favorite_rounded,
color: isLiked ? Colors.green : null,
),
onPressed: () {
if (!isLiked &&
playback.currentTrack?.id != null) {
data.spotifyApi.tracks.me
.saveOne(
playback.currentTrack!.id!)
.then((value) => setState(() {}));
}
});
});
}),
],
),
], ],
), ),
) )

View File

@ -3,8 +3,14 @@ import 'package:spotify/spotify.dart';
import 'package:spotube/components/Artist/ArtistProfile.dart'; import 'package:spotube/components/Artist/ArtistProfile.dart';
import 'package:spotube/components/Shared/LinkText.dart'; import 'package:spotube/components/Shared/LinkText.dart';
Widget artistsToClickableArtists(List<ArtistSimple> artists) { Widget artistsToClickableArtists(
List<ArtistSimple> artists, {
CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
}) {
return Row( return Row(
crossAxisAlignment: crossAxisAlignment,
mainAxisAlignment: mainAxisAlignment,
children: artists children: artists
.asMap() .asMap()
.entries .entries