flutter开发实战-WidgetsBinding监听页面前台后台退出状态

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

学习记录,每天不停进步。

相关推荐
w_y_fan21 小时前
Flutter 滚动组件总结
前端·flutter
醉过才知酒浓1 天前
Flutter Getx 的页面传参
flutter
火柴就是我2 天前
flutter 之真手势冲突处理
android·flutter
Speed1232 天前
`mockito` 的核心“打桩”规则
flutter·dart
法的空间2 天前
Flutter JsonToDart 支持 JsonSchema
android·flutter·ios
恋猫de小郭2 天前
Android 将强制应用使用主题图标,你怎么看?
android·前端·flutter
玲珑Felone2 天前
从flutter源码看其渲染机制
android·flutter
ALLIN3 天前
Flutter 三种方式实现页面切换后保持原页面状态
flutter
Dabei3 天前
Flutter 国际化
flutter
Dabei3 天前
Flutter MQTT 通信文档
flutter