share playlists & track support added

This commit is contained in:
Kingkor Roy Tirtho 2022-06-03 11:41:21 +06:00
parent b05efd3d36
commit e3c7b83ae0
4 changed files with 66 additions and 1 deletions

View File

@ -1,3 +1,4 @@
import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotube/components/Shared/HeartButton.dart';
@ -109,6 +110,27 @@ class PlaylistView extends HookConsumerWidget {
},
);
}),
IconButton(
icon: const Icon(Icons.share_rounded),
onPressed: () {
final data =
"https://open.spotify.com/playlist/${playlist.id}";
Clipboard.setData(
ClipboardData(text: data),
).then((_) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
width: 300,
behavior: SnackBarBehavior.floating,
content: Text(
"Copied $data to clipboard",
textAlign: TextAlign.center,
),
),
);
});
},
),
// play playlist
IconButton(
icon: Icon(

View File

@ -1,5 +1,6 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotify/spotify.dart';
@ -57,6 +58,22 @@ class TrackTile extends HookConsumerWidget {
return await spotify.playlists.removeTrack(track.value.uri!, playlistId!);
}, [playlistId, spotify, track.value.uri]);
void actionShare(Track track) {
final data = "https://open.spotify.com/track/${track.id}";
Clipboard.setData(ClipboardData(text: data)).then((_) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
width: 300,
behavior: SnackBarBehavior.floating,
content: Text(
"Copied $data to clipboard",
textAlign: TextAlign.center,
),
),
);
});
}
actionAddToPlaylist() async {
showDialog(
context: context,
@ -252,6 +269,16 @@ class TrackTile extends HookConsumerWidget {
],
),
value: "favorite",
),
PopupMenuItem(
child: Row(
children: const [
Icon(Icons.share_rounded),
SizedBox(width: 10),
Text("Share")
],
),
value: "share",
)
];
},
@ -266,6 +293,9 @@ class TrackTile extends HookConsumerWidget {
case "remove-playlist":
actionRemoveFromPlaylist();
break;
case "share":
actionShare(track.value);
break;
}
},
);

View File

@ -13,7 +13,6 @@ ThemeData darkTheme({
scaffoldBackgroundColor: backgroundMaterialColor[900],
dialogBackgroundColor: backgroundMaterialColor[800],
shadowColor: Colors.black26,
popupMenuTheme: PopupMenuThemeData(color: backgroundMaterialColor[800]),
buttonTheme: ButtonThemeData(
buttonColor: accentMaterialColor,
),
@ -56,6 +55,13 @@ ThemeData darkTheme({
),
),
),
popupMenuTheme: PopupMenuThemeData(
color: backgroundMaterialColor[800],
elevation: 2,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
),
),
cardColor: backgroundMaterialColor[800],
canvasColor: backgroundMaterialColor[900],
);

View File

@ -81,6 +81,13 @@ ThemeData lightTheme({
),
),
),
popupMenuTheme: PopupMenuThemeData(
color: backgroundMaterialColor[100],
elevation: 2,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
),
),
cardColor: backgroundMaterialColor[50],
canvasColor: backgroundMaterialColor[50],
);