我有以下代码,我使用just_audio作为我的音频播放器。我的问题是我想在用户离开应用程序时暂停、取消暂停音频。我通过以下方式成功完成了这一点:
@override
void initState() {
WidgetsBinding.instance.addObserver(this);
super.initState();
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
audioPlayer.dispose();
super.dispose();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
if (isPaused) {
isPaused = false;
audioPlayer.play();
}
} else if (state == AppLifecycleState.paused) {
if (audioPlayer.playing) {
isPaused = true;
audioPlayer.pause();
}
}
}
我的问题是,当我点击主页按钮时,应用程序会在完成应用程序关闭动画后暂停音频(即当您在应用程序内按下主页按钮时获得的动画,您的应用程序会从各个方向缩小到中心并完全消失)。
这感觉很笨拙,因为动画完成后音频停止。有时它会在动画完成后停止 + 最多 1 秒过去。我在发布版本上对其进行了测试,结果相同。这太可怕了!问题是 Flutter 检测到 AppLifecycleState.paused 状态太晚了,不如原生快(实际上没有接近原生)。原生 Android 几乎在按下 home 键的那一刻就检测到它。当用户点击主页按钮时,是否有其他方法可以暂停和取消暂停 Flutter 中的音频播放器?对于生产就绪的应用程序来说,这是无法接受的。
我的颤振版本:1.22.0 稳定版