mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 07:55:18 +00:00
share playlists & track support added
This commit is contained in:
parent
b05efd3d36
commit
e3c7b83ae0
@ -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(
|
||||
|
@ -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;
|
||||
}
|
||||
},
|
||||
);
|
||||
|
@ -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],
|
||||
);
|
||||
|
@ -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],
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user