我有一个歌曲列表在歌曲屏幕上。如果用户点击列表中的其中一项,我会调用 loadFirstPlaylist()
将歌曲列表(专辑中的所有歌曲)加载到队列中,然后跳过队列并播放。它在 Android 上工作正常,但我在 iOS 上遇到了以下错误:
Future<void> loadFirstPlayList(List<MediaItem> playlist, int index) async {
await emptyPlaylist();
if (playlist.isNotEmpty) {
await _audioHandler.addQueueItems(playlist);
await _audioHandler.skipToQueueItem(index);
await _audioHandler.play();
}
}
音频处理方法
@override
Future<void> addQueueItems(List<MediaItem> mediaItems) async {
// manage Just Audio
final audioSource = mediaItems.map(_createAudioSource);
_playlist.addAll(audioSource.toList());
// notify system
final newQueue = queue.value..addAll(mediaItems);
queue.add(newQueue);
}
@override
Future<void> skipToQueueItem(int index) async {
if (index < 0 || index >= queue.value.length) return;
if (_player.shuffleModeEnabled) {
index = _player.shuffleIndices![index];
}
_player.seek(Duration.zero, index: index);
}
@override
Future<void> play() => _player.play();