如果你是从原生开发转flutter的,使用flutter开发的时候,有没有遇到一些操作是让人疑惑的,例如原生的生命周期为什么在flutter里面没有实现呢。
其实flutter有对应的app生命周期函数的,那就是WidgetsBindingObserver 在这个WidgetsBindingObserver的类里面有个didChangeAppLifecycleState函数,参数AppLifecycleState就是我们app的生命周期执行的过程。
首先看AppLifecycleState
- resumed 对应android的onResume,ios的applicationDidBecomeActive
- inactive 对应android的onPause, ios的applicationWillResignActive
- paused 对应android的onStop, ios的applicationDidEnterBackground
- detached 对应android的onDestroy ios的applicationWillTerminate
其实以上的四个生命周期函数理论上也是够用的。
对比原生来说,是不是少了几个生命周期函数,如果有些复杂的业务,我们需要用到复杂的生命周期函数怎么办,在这里其实也有很多flutter pub的插件封装,我们可以直接使用。
例如 app_life 这个插件 点击查看
需要向flutter下面的原生类里面注册需要的生命周期函数
- android
- ios
接下来就是在自己需要使用原生生命周期的页面 with LifeManageCall类,
在 initState函数使用LifeManage.instance!.addObserver(this);注册插件即可。
@override
void initState() {
super.initState();
LifeManage.instance!.addObserver(this);
}
android和ios原生生命周期函数都有实现,效果跟原生开发是一致的。