我正在开发我的第一个 Flutter 应用程序,它实现了基本的流功能。启动时,应用程序从源 A 加载流。应用程序包含导航菜单,允许用户播放来自其他源 B、C、D 等的流。来自源 A 的初始流完全按预期运行,但我无法弄清楚如何将流源从 A 更改为 B、C、D。需要说明的是,我了解在 UI 中需要做什么,但我不确定如何在 audio_service 和 just_audio 中更改音频源. 查看文档,我发现 AudioHandler 在 audio_service.dart 包(playMediaItem())中提供了一个很好的候选函数,但是,创建一个新的 MediaItem 并将其传递给该函数没有任何效果:
我已经根据 audio_service 文档设置了我的 AudioPlayerHander 类:
class AudioPlayerHandler extends BaseAudioHandler {
// Declare MediaItem used for streaming
static const _stream = MediaItem(
id: 'some URL',
title: 'Stream A',
);
// Instantiate a just_audio AudioPlayer
final _player = AudioPlayer();
//Initialize audio handler
AudioPlayerHandler() {
_player.playbackEventStream.map(_transformEvent).pipe(playbackState);
mediaItem.add(_stream);
_player.setAudioSource(AudioSource.uri(Uri.parse(_stream.id)));
}
@override
Future<void> play() => _player.play();
@override
Future<void> pause() => _player.pause();
@override
Future<void> stop() => _player.stop();
用户可以导航到他们单击按钮以播放源 B 的路线:
var stream_b = MediaItem(
id: 'some URL', //
title: 'Stream B',
);
audioHandler.playMediaItem(stream_b); //no apparent effect
audioHandler.play(); // If stream A was paused or stopped, it will now resume