fix: endless playback not working

This commit is contained in:
Kingkor Roy Tirtho 2025-07-19 13:58:05 +06:00
parent d2e0dc1ac9
commit 60f032039f
2 changed files with 9 additions and 6 deletions

View File

@ -1,5 +1,6 @@
import 'dart:math'; import 'dart:math';
import 'package:collection/collection.dart';
import 'package:drift/drift.dart'; import 'package:drift/drift.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotube/extensions/list.dart'; import 'package:spotube/extensions/list.dart';
@ -149,10 +150,13 @@ class AudioPlayerNotifier extends Notifier<AudioPlayerState> {
final tracks = queries final tracks = queries
.map( .map(
(query) => state.tracks (query) => state.tracks.firstWhereOrNull(
.firstWhere((element) => element.id == query.id), (element) => element.id == query.id,
),
) )
.nonNulls
.toList(); .toList();
state = state.copyWith( state = state.copyWith(
tracks: tracks, tracks: tracks,
currentIndex: playlist.index, currentIndex: playlist.index,
@ -265,12 +269,12 @@ class AudioPlayerNotifier extends Notifier<AudioPlayerState> {
_assertAllowedTracks(tracks); _assertAllowedTracks(tracks);
tracks = _blacklist.filter(tracks).toList(); tracks = _blacklist.filter(tracks).toList();
state = state.copyWith(
tracks: [...state.tracks, ...tracks],
);
for (final track in tracks) { for (final track in tracks) {
await audioPlayer.addTrack(SpotubeMedia(track)); await audioPlayer.addTrack(SpotubeMedia(track));
} }
state = state.copyWith(
tracks: [...state.tracks, ...tracks],
);
} }
Future<void> removeTrack(String trackId) async { Future<void> removeTrack(String trackId) async {

View File

@ -7,7 +7,6 @@ import 'package:dio/dio.dart' as dio_lib;
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:metadata_god/metadata_god.dart'; import 'package:metadata_god/metadata_god.dart';
import 'package:mime/mime.dart';
import 'package:path/path.dart'; import 'package:path/path.dart';
import 'package:shelf/shelf.dart'; import 'package:shelf/shelf.dart';
import 'package:spotube/models/metadata/metadata.dart'; import 'package:spotube/models/metadata/metadata.dart';