我想检测用户何时退出我的应用程序并在之前执行一些代码,但我不知道如何做到这一点。我试着用这个包:https://pub.dev/packages/flutter_lifecycle_state,但我有这个错误:
http:pub.dartlang.org/flutter_lifecycle_state-1.0.0/lib/flutter_lifecycle_state.dart:80:30:错误:找不到Getter:“暂停”case AppLifecycleState.挂起
如果您有任何解决方案,或者知道另一种方法来检测用户何时退出我的应用,这可能是很酷的
6条答案
按热度按时间z2acfund1#
你现在不能做你想做的事情,无论如何,现在最好的方法是使用SDK中的AppLifecycleState来检查应用程序何时在后台运行/处于非活动状态(基本上做你的库正在尝试做的事情)
你正在使用的库已经过时了,因为2019年11月的一个pull请求将
AppLifecycleState.suspending
命名为AppLifecycleState.detached
。您可以查看api.flutter.dev网站中的AppLifecycleState枚举
下面是如何观察包含Activity的生命周期状态的示例:
我认为删除你的数据在非活动周期,然后创建它再次在恢复的一个可以为你工作。
mu0hgdu02#
audio_service插件做的事情非常相似。策略是将应用 Package 在一个自定义小部件中,该小部件监听应用生命周期状态何时发生变化,然后根据状态运行不同的代码。我不是说你应该使用这个插件,但你可以调整代码,以满足您的需要。将下面对
AudioService
的引用替换为您需要运行的任何代码。下面是the code from audio_service:
注意:
p1tboqfb3#
把你的main/home/top
Scaffold
小部件放在WillPopScope
里面怎么样?omtl5h9j4#
1-)首先在有状态小部件中使用WidgetsBindingObserver,关键字为“with”。
2-)在initState中使用
WidgetsBinding.instance.addObserver(this);
初始化WidgetsBinding3-)在您的部署中使用
WidgetsBinding.instance.removeObserver(this);
部署控件绑定。4-)最后,使用didChangeAppLifecycleState检查用户是否离开了应用程序。下面的例子;
41ik7eoe5#
我在Android端的一个插件中实现了类似的东西,这个想法是你需要使用Flutters
MethodChannel
类,然后从本地端调用你想要在应用程序关闭之前从Flutter端执行的方法。在我的例子中,我实现了对
onDetachedFromActivity
的重写,它在Flutter引擎分离之前被调用。此方法位于io.flutter.embedding.engine.plugins.activity.ActivityAware接口laawzig26#
在我的测试中,WidgetsBinfing无法检测到onDestory。我认为Flutters MethodChannel是最好的方式来完成特定的功能时,应用程序的onDestory。(巴塞尔Abuhadrous回答)