From 60f032039f30ed2b044779cac37fd00c78eef622 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 19 Jul 2025 13:58:05 +0600 Subject: [PATCH] fix: endless playback not working --- lib/provider/audio_player/audio_player.dart | 14 +++++++++----- lib/provider/server/routes/playback.dart | 1 - 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/provider/audio_player/audio_player.dart b/lib/provider/audio_player/audio_player.dart index 245c692c..d77cb9a4 100644 --- a/lib/provider/audio_player/audio_player.dart +++ b/lib/provider/audio_player/audio_player.dart @@ -1,5 +1,6 @@ import 'dart:math'; +import 'package:collection/collection.dart'; import 'package:drift/drift.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:spotube/extensions/list.dart'; @@ -149,10 +150,13 @@ class AudioPlayerNotifier extends Notifier { final tracks = queries .map( - (query) => state.tracks - .firstWhere((element) => element.id == query.id), + (query) => state.tracks.firstWhereOrNull( + (element) => element.id == query.id, + ), ) + .nonNulls .toList(); + state = state.copyWith( tracks: tracks, currentIndex: playlist.index, @@ -265,12 +269,12 @@ class AudioPlayerNotifier extends Notifier { _assertAllowedTracks(tracks); tracks = _blacklist.filter(tracks).toList(); - state = state.copyWith( - tracks: [...state.tracks, ...tracks], - ); for (final track in tracks) { await audioPlayer.addTrack(SpotubeMedia(track)); } + state = state.copyWith( + tracks: [...state.tracks, ...tracks], + ); } Future removeTrack(String trackId) async { diff --git a/lib/provider/server/routes/playback.dart b/lib/provider/server/routes/playback.dart index 57bb7e7d..25026425 100644 --- a/lib/provider/server/routes/playback.dart +++ b/lib/provider/server/routes/playback.dart @@ -7,7 +7,6 @@ import 'package:dio/dio.dart' as dio_lib; import 'package:flutter/foundation.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:metadata_god/metadata_god.dart'; -import 'package:mime/mime.dart'; import 'package:path/path.dart'; import 'package:shelf/shelf.dart'; import 'package:spotube/models/metadata/metadata.dart';