【问题标题】:Is there a way to detect if an app was closed via the back button?有没有办法检测应用程序是否通过后退按钮关闭?
【发布时间】:2019-09-25 13:03:02
【问题描述】:

当您在 Android 上通过后退按钮关闭 Flutter 应用时,会出现一些关于插件的问题。插件的 dart/flutter 端重新启动,android 部分没有。这会导致麻烦,尤其是在播放音频等后台活动时。 我认为这是一个关键问题,所以我创建了一个 GitHub 问题:https://github.com/flutter/flutter/issues/31734

我想做一个解决方法,所以如果应用通过后退按钮关闭,播放应该会停止。

我尝试通过didChangeAppLifecycleState 方法检测后退按钮关闭操作。但是在那里我可以确定它是正常的关闭操作还是使用后退按钮。

您可以通过audioplayers 插件的示例自己尝试一下。我还在那里创建了一个新的issue

【问题讨论】:

    标签: android flutter


    【解决方案1】:

    在我看来,您无法准确确定应用程序是否已通过后退按钮关闭。相反,您可以使用back_button_interceptor 作为中间件,通过后退按钮确定是否要关闭应用程序:

    bool myInterceptor(bool stopDefaultButtonEvent) {
      String currentRoute = BackButtonInterceptor.getCurrentNavigatorRouteName(context);
    
      if (currentRoute == '/home') {
        // Back button has been pressed while you're in the home, so the app is going to close
        doYourStuff();
      }
    
      return false;
    }
    

    当然,您必须实现路由才能实现这一点,但这是我能找到的最精确的方法,因为创建覆盖(并因此覆盖后退按钮操作)的所有内容都会更改 getCurrentNavigatorRouteName 的结果,包括对话框甚至来自AppBarPopupMenus。

    【讨论】:

    • 好吧;我可以检测到是否按下了返回按钮,但我无法检测到是否是关闭应用程序的点击。
    • @Butzlabben 请看看我的编辑,让我知道它是否适合你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 2010-09-22
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2012-05-14
    相关资源
    最近更新 更多