如何知道我的应用程序正在退出设备的最新应用程序,还是不在Flutter中退出?

时间:2020-03-31 13:54:17

标签: flutter flutter-layout lifecycle

我是Flutter的新手。我正在开发自己的演示Flutter应用程序之一。我在我的应用程序中创建了3个屏幕(登录,注册和主页)。我只是从登录屏幕导航到主屏幕。现在,我要检查-我的应用程序是否存在或关闭? -从Android和IOS中的最新应用中清除该应用。我已经检查了 AppLifecycleState.detached ,还检查了覆盖方法 dispose(),但是当用户终止该应用程序时,这些方法没有调用。 请帮我知道我的应用程序被杀了。我需要使用哪种方法。

我已将 AppLifecycleState.paused 用于其他过程。所以我想用其他方法来处理它。

在本机Android中,我们可以借助 onDestroy()方法进行检查;在iOS本机应用中,我们可以借助 applicationWillTerminate()进行检查。

Flutter需要使用哪种方法?

请帮助我修复它。

预先感谢。

2 个答案:

答案 0 :(得分:0)

我找到了一种解决方案来检测应用程序是否被破坏或退出。在颤振中,我们有dispose()方法。在我的情况下,app销毁时未调用dispose()方法。因此,我刚刚更新了dispose()方法。请参见下面的代码。

 @mustCallSuper
  @protected
  void dispose() {
    // TODO: implement dispose

    print('dispose called.............');
    super.dispose();
  }

答案 1 :(得分:-1)

如果我们需要知道我们的应用何时到达后台该怎么办?当谈到前景?有什么办法可以检测到吗?好吧,这是您的幸运日,我现在要向您解释。 我们需要在StatefulWidget内部,特别是在State类中进行一些更改:

类_MyScreenState用WidgetsBindingObserver扩展状态 一旦实现了抽象类WidgetsBindingObserver,我们就需要“观察”应用生命周期状态的变化。为此,我们需要在initState中添加以下内容:

WidgetsBinding.instance.addObserver(this);

以及这条线在我们的处置中:

WidgetsBinding.instance.removeObserver(this);

太好了!但是我在哪里“听到”这些变化? didChangeAppLifecycleState将为:

@override
void didChangeAppLifecycleState(AppLifecycleState state) {
 super.didChangeAppLifecycleState(state);
 if (state == AppLifecycleState.paused) {
// went to Background
 }
  if (state == AppLifecycleState.resumed) {
  // came back to Foreground
  }
 }

这个技巧非常有用!如果您的应用需要在进入后台时显示通知,如果您需要在那一刻保存数据,如果需要在用户回来时显示弹出窗口,等等,那么这种逻辑有很多用例!

我在这篇文章上发现了这一点,希望它会有用,这是该链接 link

我发现了link的轻巧包