Flutter 개발 실습 - WidgetsBinding은 페이지의 전경과 배경의 종료 상태를 모니터링합니다.

Flutter 개발 실습 - WidgetsBinding은 페이지의 전경과 배경의 종료 상태를 모니터링합니다.

개발 과정에서 페이지의 전경과 배경의 종료 상태를 모니터링하는 경우가 많습니다. 여기서는 WidgetsBinding을 사용합니다.

1. 위젯바인딩이란 무엇입니까?

WidgetsBinding은 위젯 트리와의 상호 작용을 제공하는 Flutter의 가장 중요한 바인딩 중 하나입니다. Flutter에서 가장 단순한 텍스트부터 가장 복잡한 레이아웃까지 모든 UI는 위젯 트리로 설명할 수 있습니다. WidgetsBinding은 사용자 입력 이벤트, 레이아웃 및 그리기를 처리합니다. 또한 네이티브 코드 호출, 알림 처리 등 시스템과 상호 작용하기 위한 플랫폼 채널도 처리합니다. WidgetsBinding은 addPostFrameCallback, deferredUnmount, getRendererBinding 등과 같이 일반적으로 사용되는 몇 가지 메서드를 제공합니다.

2. 페이지 전경과 배경의 종료 상태를 모니터링합니다.

WidgetsBinding은 페이지의 전경과 배경의 종료 상태를 모니터링하므로 이를 위젯에 추가해야 합니다.

~와 함께WidgetsBindingObserver

initState에 관찰자 추가

 WidgetsBinding.instance?.addObserver(this);

처분할 때 관찰자를 제거하십시오.

 WidgetsBinding.instance?.removeObserver(this);

그런 다음 didChangeAppLifecycleState 응답 메서드를 통해 페이지 전경 및 배경의 종료 상태를 모니터링합니다.

// WidgetBinding
  ///生命周期变化时回调
  //  resumed:应用可见并可响应用户操作
  //  inactive:用户可见,但不可响应用户操作
  //  paused:已经暂停了,用户不可见、不可操作
  //  suspending:应用被挂起,此状态IOS永远不会回调
  
  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;
        }
    }
  }

  ///当前系统改变了一些访问性活动的回调
  
  void didChangeAccessibilityFeatures() {
    
    
    super.didChangeAccessibilityFeatures();
  }

  /// Called when the system is running low on memory.
  ///低内存回调
  
  void didHaveMemoryPressure() {
    
    
    super.didHaveMemoryPressure();
  }

  /// Called when the application's dimensions change. For example,
  /// when a phone is rotated.
  ///应用尺寸改变时回调,例如旋转
  
  void didChangeMetrics() {
    
    
    super.didChangeMetrics();
  }

  /// {@macro on_platform_brightness_change}
  
  void didChangePlatformBrightness() {
    
    
    super.didChangePlatformBrightness();
  }

  ///文字系数变化
  
  void didChangeTextScaleFactor() {
    
    
    super.didChangeTextScaleFactor();
  }

3. 요약

Flutter 개발 실습-WidgetsBinding은 페이지의 전경과 배경의 종료 상태를 모니터링합니다.

https://blog.csdn.net/gloryFlow/article/details/132253284
학습 기록, 날마다 발전을 이루고 있습니다.

추천

출처blog.csdn.net/gloryFlow/article/details/132253284