loadPlaylist method
Loads a playlist and optionally starts playing from a specific index.
Throws AudioLoadException if loading fails.
Implementation
@override
Future<void> loadPlaylist(Playlist playlist, {int startIndex = 0}) async {
_ensureInitialized();
if (playlist.tracks.isEmpty) {
throw AudioPlayerExceptions.loadingFailed('Playlist is empty');
}
try {
_loadingState = AudioLoadingState.loading;
_loadingStateController.add(_loadingState);
_currentPlaylist = playlist;
_currentTrackIndex = startIndex.clamp(0, playlist.tracks.length - 1);
// Load the track at start index.
await _loadTrackAtIndex(_currentTrackIndex);
// Update streams.
_playlistController.add(_currentPlaylist);
_currentTrackController.add(_getCurrentTrack());
_loadingState = AudioLoadingState.loaded;
_loadingStateController.add(_loadingState);
} catch (e, s) {
_loadingState = AudioLoadingState.failed;
_loadingStateController.add(_loadingState);
developer.log(
'Failed to load playlist',
name: 'JustAudioPlayer',
error: e,
stackTrace: s,
);
Error.throwWithStackTrace(
AudioPlayerExceptions.loadingFailed('Failed to load playlist'),
s,
);
}
}