setAudioSource method
Future<Duration?>
setAudioSource(
- AudioSource source, {
- bool preload = true,
- int? initialIndex,
- Duration? initialPosition,
Sets the source from which this audio player should fetch audio.
By default, this method will immediately start loading audio and return
its duration as soon as it is known, or null if that information is
unavailable. Set preload to false if you would prefer to delay loading
until some later point, either via an explicit call to load or via a
call to play which implicitly loads the audio. If preload is false,
a null duration will be returned. Note that the preload option will
automatically be assumed as true if playing is currently true.
Optionally specify initialPosition and initialIndex to seek to an
initial position within a particular item (defaulting to position zero of
the first item).
When preload is true, this method may throw:
- Exception if no audio source has been previously set.
- PlayerException if the audio source was unable to be loaded.
- PlayerInterruptedException if another audio source was loaded before this call completed or the player was stopped or disposed of before the call completed.
Implementation
Future<Duration?> setAudioSource(
AudioSource source, {
bool preload = true,
int? initialIndex,
Duration? initialPosition,
}) async {
if (_disposed) return null;
_audioSource = null;
_initialSeekValues =
_InitialSeekValues(position: initialPosition, index: initialIndex);
_playbackEventSubject.add(_playbackEvent = PlaybackEvent(
currentIndex: initialIndex ?? 0,
updatePosition: initialPosition ?? Duration.zero));
_audioSource = source;
_broadcastSequence();
Duration? duration;
if (playing) preload = true;
if (preload) {
duration = await load();
} else {
await _setPlatformActive(false)?.catchError((dynamic e) async => null);
}
return duration;
}