loadPlaylist method

  1. @override
Future<void> loadPlaylist(
  1. Playlist playlist, {
  2. int startIndex = 0,
})
override

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,
    );
  }
}