State 的生命周期,定义了 Widget 的加载到构建的全过程,可以利用其回调机制根据 Widget 的状态选择合适的时机做合适的事情。而 APP 的生命周期,则定义了 APP 从启动到退出的全过程
如果想在对应的 APP 的生命周期事件中做相应的处理,比如 APP 从后台进入前台、从前台退到后台,或是在 UI 绘制完后做一些处理,则可以应用 WidgetsBindingObserver 类来实现
WidgetsBindingObserver 中的回调方法
// Accessibility 相关特性回调
void didChangeAccessibilityFeatures() { }
// App 生命周期改变回调
void didChangeAppLifecycleState(AppLifecycleState state) { }
// 本地化语言改变回调
void didChangeLocales(List<Locale> locale) { }
// 系统窗口相关改变回调
void didChangeMetrics() { }
// 系统亮度改变回调
void didChangePlatformBrightness() { }
// 文本缩放系数改变回调
void didChangeTextScaleFactor() { }
// 内存不足警告回调
void didHaveMemoryPressure() { }
// 页面 pop
Future<bool> didPopRoute() => Future<bool>.value(false);
// 页面 push
Future<bool> didPushRoute(String route) => Future<bool>.value(false);
要使用以上回调方法,只需通过给 WidgetsBindingObserver 单例对象设置监听器即可监听相关回调方法