Flutter 检测到恢复时颤振太晚,无法暂停音乐

Flutter 检测到恢复时颤振太晚,无法暂停音乐,flutter,just-audio,Flutter,Just Audio,我有以下代码,我用我的音频播放器。我的问题是,当用户离开应用程序时,我想暂停、取消音频暂停。我通过以下几点成功地做到了这一点: @override void initState() { WidgetsBinding.instance.addObserver(this); super.initState(); } @override void dispose() { WidgetsBinding.instance.removeObserver(this);

我有以下代码,我用我的音频播放器。我的问题是,当用户离开应用程序时,我想暂停、取消音频暂停。我通过以下几点成功地做到了这一点:

@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();
      }
    }
  }
我这里的问题是,当我按下home(主页)按钮时,应用程序在完成应用程序关闭动画后暂停音频(即当你在应用程序中按下home(主页)按钮时得到的动画,你的应用程序从各个方向向下缩放到中心,然后完全消失)

当动画结束时音频停止时,这感觉非常笨拙。有时,它会在动画完成后停止+最多再经过1秒。我在发布版上测试了它,结果是一样的。这太可怕了!问题是flifter检测AppLifecycleState.paused状态太晚,速度不如本机快(实际上没有接近本机的地方)。本机Android几乎在按下home键的瞬间检测到它。当用户点击home(主页)按钮时,是否有其他方法暂停和取消音频播放器的暂停?这对于生产就绪的应用程序来说是不可接受的

我的颤振版本:
1.22.0稳定

不幸的是,目前无法立即对Android的
onPause
生命周期事件做出反应。这是由于在颤振引擎中运行的Dart代码与插件提供的本机平台代码之间的通信具有异步性质。只要Dart层中的代码通过“平台通道”向平台层发送消息,它就会被添加到队列中并进行调度。从平台端到Dart端的响应消息类似地添加到队列中并进行调度。当有很多事情发生时(例如,当你按下home(主页)按钮时),事情会特别忙,你不会得到即时响应。然而,颤振团队的一份报告概述了在颤振引擎和平台之间添加同步通信的计划,该计划应能解决该问题。如果需要此功能,可以将反馈直接添加到该文档中,供颤振团队查看


与此同时,对Android的
onPause
生命周期做出即时反应的唯一方法是使用本机平台代码。例如,一个功能可以直接嵌入到插件中,您使用该插件来自动暂停播放器,以响应
onPause
,而且它能够立即做出反应,因为生命周期事件将在平台端接收和处理,而无需通过上面提到的异步平台通道。

作为just_audio的创建者,如果您可以添加此功能,那将非常棒。我相信看到这一幕会非常好,欢迎您发表评论!您是否也在我上面链接的文档中添加了反馈?我没有,非活动生命周期现在似乎立即检测到暂停,因此我没有填写反馈