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

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

相关推荐
程序员老刘21 小时前
跨平台开发地图 | 2026年6月
flutter·ai编程·客户端
悟空瞎说2 天前
Flutter 架构详解:新手必懂底层原理
flutter
SoaringHeart2 天前
Flutter最佳实践:IM聊天文字链接自动识别跳转
前端·flutter
恋猫de小郭2 天前
KMP / CMP 鸿蒙版本 Beta 发布,他有什么特别之处?
android·前端·flutter
风华圆舞3 天前
Flutter + 鸿蒙 Intents Kit:页面直达能力的完整接入方案
flutter·ui·华为·harmonyos
韩曙亮3 天前
【Flutter】Flutter 组件 ④ ( 组件渲染 的 三棵树理论 | Widget 树 → Element 树 → RenderObject 树 )
flutter·element·widget·renderobject
恋猫de小郭3 天前
Android 17 正式版发布,全新 AI 和各种破坏性更新
android·前端·flutter
kingbal3 天前
Windows:flutter环境搭建
windows·flutter
911hzh3 天前
Flutter MethodChannel 跨端通信框架 zh_native_channel:快速入门、优势分析与 Pigeon 对比
flutter
911hzh3 天前
Flutter 快速搭建新项目:用 Flutter Foundation Kit 一条命令生成带基础架构的 App 模板
flutter