Playlists, looping, shuffling for iOS

This commit is contained in:
Ryan Heise 2020-07-28 03:54:00 +10:00
parent c0c5d0c2bf
commit a63ef2ba39
44 changed files with 1629 additions and 362 deletions

View file

@ -136,25 +136,33 @@ class AudioPlayer {
_eventChannelStream = EventChannel('com.ryanheise.just_audio.events.$_id')
.receiveBroadcastStream()
.map((data) {
final duration = (data['duration'] ?? -1) < 0
? null
: Duration(milliseconds: data['duration']);
_durationFuture = Future.value(duration);
_durationSubject.add(duration);
_audioPlaybackEvent = AudioPlaybackEvent(
state: AudioPlaybackState.values[data['state']],
buffering: data['buffering'],
updatePosition: Duration(milliseconds: data['updatePosition']),
updateTime: Duration(milliseconds: data['updateTime']),
bufferedPosition: Duration(milliseconds: data['bufferedPosition']),
speed: _speed,
duration: duration,
icyMetadata: data['icyMetadata'] == null
try {
//print("received raw event: $data");
final duration = (data['duration'] ?? -1) < 0
? null
: IcyMetadata.fromJson(data['icyMetadata']),
currentIndex: data['currentIndex'],
);
return _audioPlaybackEvent;
: Duration(milliseconds: data['duration']);
_durationFuture = Future.value(duration);
_durationSubject.add(duration);
_audioPlaybackEvent = AudioPlaybackEvent(
state: AudioPlaybackState.values[data['state']],
buffering: data['buffering'],
updatePosition: Duration(milliseconds: data['updatePosition']),
updateTime: Duration(milliseconds: data['updateTime']),
bufferedPosition: Duration(milliseconds: data['bufferedPosition']),
speed: _speed,
duration: duration,
icyMetadata: data['icyMetadata'] == null
? null
: IcyMetadata.fromJson(data['icyMetadata']),
currentIndex: data['currentIndex'],
);
//print("created event object with state: ${_audioPlaybackEvent.state}");
return _audioPlaybackEvent;
} catch (e, stacktrace) {
print("Error parsing event: $e");
print("$stacktrace");
rethrow;
}
});
_eventChannelStreamSubscription = _eventChannelStream.listen(
_playbackEventSubject.add,

View file

@ -77,6 +77,8 @@ abstract class JustAudioPlayer {
return await setLoopMode(args[0]);
case 'setShuffleModeEnabled':
return await setShuffleModeEnabled(args[0]);
case 'setAutomaticallyWaitsToMinimizeStalling':
return null;
case 'seek':
return await seek(args[0], args[1]);
case 'dispose':