将 just_audio 包从升级just_audio: 0.2.2
到 just_audio: 0.6.5
. 我试图更改代码但失败了。这是我的代码的屏幕截图;错误详情;
请帮忙!
问问题
355 次
1 回答
2
在 0.2.x 和 0.6.x 之间会有很多变化,所以我将把我的答案集中在你显示的关于状态的具体错误上。
在 0.6.x 的新状态模型中,播放器的状态由两个称为playing
和的正交状态组成processingState
,如项目 README 中的以下状态图所示:
playing
可以是true
或false
,而processingState
可以是以下状态之一:
enum ProcessingState {
/// The player has not loaded an [AudioSource].
idle,
/// The player is loading an [AudioSource].
loading,
/// The player is buffering audio and unable to play.
buffering,
/// The player is has enough audio buffered and is able to play.
ready,
/// The player has reached the end of the audio.
completed,
}
选择这种新的复合状态模型的一个原因是,在旧模型中,无法区分以下两种状态:
- 播放时缓冲。
- 暂停时缓冲。
在新模型中,这些很容易区分。如果您的应用程序关心这两种正交状态,您可以监听playingStateStream
哪个发出封装这两种状态的事件:
_audioPlayer.playerStateStream.listen((state) {
if (state.playing) ... else ...
switch (state.processingState) {
case ProcessingState.idle: ...
case ProcessingState.loading: ...
case ProcessingState.buffering: ...
case ProcessingState.ready: ...
case ProcessingState.completed: ...
}
});
在内部,playerStateStream
通过简单地使用 rxdart 来组合playingStream
和来实现processingStateStream
。在更高级的场景中,您可以使用类似的技术将您的应用程序感兴趣的任何其他流合并到一个流中。如果您对将特定的流组合作为插件提供的标准组合有很好的论据,欢迎您在 GitHub 上提交功能请求。
最后,由于您似乎也在使用 audio_service,我建议您查看最新的 audio_service 示例,该示例演示了如何利用最新的 just_audio API 以更简洁的方式实现您的后台任务。
于 2021-02-06T02:39:27.037 回答