美文网首页
flutter之AppLifecycleReactor

flutter之AppLifecycleReactor

作者: wwq2020 | 来源:发表于2020-07-20 19:57 被阅读0次

    监听生命周期和系统的一些信息

    class AppLifecycleReactor extends StatefulWidget {
      const AppLifecycleReactor({ Key key }) : super(key: key);
    
      @override
      _AppLifecycleReactorState createState() => _AppLifecycleReactorState();
    }
    
    class _AppLifecycleReactorState extends State<AppLifecycleReactor> with WidgetsBindingObserver {
      const AppLifecycleReactor({ Key key }) : super(key: key);
    
      @override
      _AppLifecycleReactorState createState() => _AppLifecycleReactorState();
    }
    
    class _AppLifecycleReactorState extends State<AppLifecycleReactor> with WidgetsBindingObserver {
      @override
      void initState() {
        super.initState();
        WidgetsBinding.instance.addObserver(this);
      }
    
      @override
      void dispose() {
        WidgetsBinding.instance.removeObserver(this);
        super.dispose();
      }
    
      AppLifecycleState _notification;
    
      @override
      void didChangeAppLifecycleState(AppLifecycleState state) {
        switch (state) {
          case AppLifecycleState.detached:
          // 应用任然托管在flutter引擎上,但是不可见.
          // 当应用处于这个状态时,引擎没有视图的运行.要不就是当引擎第一次初始化时处于attach视        图中,要不就是由于导航弹出导致的视图销毁后
            break;
          case  AppLifecycleState.inactive:
           // 应用在一个不活跃的状态,不会收到用户的输入
          // 在ios上,这个状态相当于应用或者flutter托管的视图在前台不活跃状态运行.当有电话进来时候应用转到这个状态等
          // 在安卓上,这个状态相当于应用或者flutter托管的视图在前台不活跃状态运行.另外一个activity获得焦点时,应用转到这个状态.比如分屏,电话等
          //   在这状态的应用应该假设他们是可能被paused的.
           break;
          case AppLifecycleState.paused:
            //应用当前对于用户不可见,不会响应用户输入,运行在后台.
    
            break;
          case AppLifecycleState.resumed:
            // 应用可见,响应用户输入
            break;
          default:
        }
      }
    
      // 访问功能有变化
      @override
      void didChangeAccessibilityFeatures() {
          
      }
     
    
      // 语言变化
      @override
      void didChangeLocales(List<Locale> locale) {
        
      }
    
      // 尺寸变化
      @override
      void didChangeMetrics() {
      //通过 WidgetsBinding.instance.window.physicalSize可获取
      }
    
      // 亮度变化
      @override
      void didChangePlatformBrightness() {
    
      }
    
     ///文字比例系数变化
      @override
      void didChangeTextScaleFactor() {
          // 通过WidgetsBinding.instance.window.textScaleFactor可获取
      }
    
      // 内存过低
    @override
      void didHaveMemoryPressure() {
    
      }
    
      // 路由弹出时
    @override
      void didPopRoute() {
    
      }
    
      // 路由添加时
    @override
      void didPushRoute() {
    
      }
    
      @override
      Widget build(BuildContext context) {
        return Text("test");
      }
    }
    

    相关文章

      网友评论

          本文标题:flutter之AppLifecycleReactor

          本文链接:https://www.haomeiwen.com/subject/ktoykktx.html