flutter开发实战-WidgetsBinding监听页面前台后台退出状态
在开发过程中,经常监听页面前台后台退出状态,这里用到了WidgetsBinding
一、WidgetsBinding是什么?
WidgetsBinding是Flutter中最重要的Binding之一,它提供了与Widget树的交互。在Flutter中,所有的UI都是Widget,从最简单的文本到最复杂的布局,都可以通过Widget树来描述。WidgetsBinding负责处理用户输入事件、布局和绘制。它还处理与系统交互的平台通道,如调用原生代码和处理通知。WidgetsBinding提供了一些常用的方法,如addPostFrameCallback、deferredUnmount、getRendererBinding等。
二、监听页面前台后台退出状态
WidgetsBinding监听页面前台后台退出状态,我们需要在Widget中添加
with WidgetsBindingObserver
在initState中加入观察者
dart
WidgetsBinding.instance?.addObserver(this);
在dispose中移除观察者
dart
WidgetsBinding.instance?.removeObserver(this);
之后通过响应的方法didChangeAppLifecycleState来监听页面前台后台退出状态
dart
// WidgetBinding
///生命周期变化时回调
// resumed:应用可见并可响应用户操作
// inactive:用户可见,但不可响应用户操作
// paused:已经暂停了,用户不可见、不可操作
// suspending:应用被挂起,此状态IOS永远不会回调
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
switch (state) {
case AppLifecycleState.inactive:
{
// 处于这种状态的应用程序应该假设它们可能在任何时候暂停。
break;
}
case AppLifecycleState.resumed:
{
// 应用程序可见,前台
if (_isAppBackground == true) {
setState(() {});
_isAppBackground = false;
}
break;
}
case AppLifecycleState.paused:
{
// 应用程序不可见,后台
_isAppBackground = true;
break;
}
case AppLifecycleState.detached:
{
// 页面退出
break;
}
}
}
///当前系统改变了一些访问性活动的回调
@override
void didChangeAccessibilityFeatures() {
super.didChangeAccessibilityFeatures();
}
/// Called when the system is running low on memory.
///低内存回调
@override
void didHaveMemoryPressure() {
super.didHaveMemoryPressure();
}
/// Called when the application's dimensions change. For example,
/// when a phone is rotated.
///应用尺寸改变时回调,例如旋转
@override
void didChangeMetrics() {
super.didChangeMetrics();
}
/// {@macro on_platform_brightness_change}
@override
void didChangePlatformBrightness() {
super.didChangePlatformBrightness();
}
///文字系数变化
@override
void didChangeTextScaleFactor() {
super.didChangeTextScaleFactor();
}
三、小结
flutter开发实战-WidgetsBinding监听页面前台后台退出状态。
https://blog.csdn.net/gloryFlow/article/details/132253284
学习记录,每天不停进步。