mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 07:55:18 +00:00
Playback shuffle with correctly finding the perfect currentTrack suport added
This commit is contained in:
parent
d17a7e8b61
commit
8e436368a9
@ -1,4 +1,3 @@
|
|||||||
import 'dart:convert';
|
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:cached_network_image/cached_network_image.dart';
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
@ -59,52 +58,20 @@ class _PlayerState extends State<Player> {
|
|||||||
|
|
||||||
player.on(MPVEvents.status, null, (ev, _) async {
|
player.on(MPVEvents.status, null, (ev, _) async {
|
||||||
Map data = ev.eventData as Map;
|
Map data = ev.eventData as Map;
|
||||||
print(
|
|
||||||
"\n======================\nEVENT $data\n=======================\n");
|
|
||||||
Playback playback = context.read<Playback>();
|
Playback playback = context.read<Playback>();
|
||||||
|
|
||||||
// that means a new playlist have been added
|
|
||||||
if (data["property"] == "playlist-count" && data["value"] > 0) {
|
|
||||||
var playlist = await player.getProperty("playlist");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data["property"] == "media-title" && data["value"] != null) {
|
if (data["property"] == "media-title" && data["value"] != null) {
|
||||||
// var containsYtdl = (data["value"] as String).contains("ytsearch:");
|
var track = playback.currentPlaylist?.tracks.where((track) {
|
||||||
// if (containsYtdl) {
|
String title = data["value"];
|
||||||
// var props = (data["value"] as String).split("-");
|
return title.contains(track.name!) &&
|
||||||
// var mediaTitle = props.last.trim();
|
track.artists!
|
||||||
// var mediaArtists = props.first.split("ytsearch:").last.trim();
|
.every((artist) => title.contains(artist.name!));
|
||||||
// setState(() {
|
});
|
||||||
// _isPlaying = true;
|
if (track != null && track.isNotEmpty) {
|
||||||
// });
|
|
||||||
|
|
||||||
// var matchedTracks = playback.currentPlaylist?.tracks.where(
|
|
||||||
// (track) {
|
|
||||||
// return track.name?.replaceAll("-", " ") == mediaTitle &&
|
|
||||||
// artistsToString(track.artists ?? []) == mediaArtists;
|
|
||||||
// },
|
|
||||||
// ) ??
|
|
||||||
// [];
|
|
||||||
// if (matchedTracks.isNotEmpty) {
|
|
||||||
// playback.setCurrentTrack = matchedTracks.first;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
int playlistCurrentPos;
|
|
||||||
if (_shuffled) {
|
|
||||||
await player.unshuffle();
|
|
||||||
playlistCurrentPos = await player.getPlaylistPosition();
|
|
||||||
await player.shuffle();
|
|
||||||
} else {
|
|
||||||
playlistCurrentPos = await player.getPlaylistPosition();
|
|
||||||
}
|
|
||||||
print("${data["value"]} $playlistCurrentPos");
|
|
||||||
Track? track =
|
|
||||||
playback.currentPlaylist?.tracks.elementAt(playlistCurrentPos);
|
|
||||||
if (track != null) {
|
|
||||||
setState(() {
|
setState(() {
|
||||||
_isPlaying = true;
|
_isPlaying = true;
|
||||||
});
|
});
|
||||||
playback.setCurrentTrack = track;
|
playback.setCurrentTrack = track.first;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (data["property"] == "duration" && data["value"] != null) {
|
if (data["property"] == "duration" && data["value"] != null) {
|
||||||
|
Loading…
Reference in New Issue
Block a user