Playback shuffle with correctly finding the perfect currentTrack suport added

This commit is contained in:
Kingkor Roy Tirtho 2022-01-08 18:47:56 +06:00
parent d17a7e8b61
commit 8e436368a9

View File

@ -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) {