颤振如何处理关闭的手机屏幕?

时间:2020-06-23 12:26:50

标签: flutter dart

当屏幕关闭时,仅某些Dart代码运行。当手机屏幕关闭时,Flutter会做什么?它会停止渲染但仍运行特定的Dart代码吗?


就我而言,即使屏幕关闭,也会调用Dart回调函数(传递给Flutter插件)。我想自定义/控制这种行为,因为我正在运行的计算成本很高的代码,当用户看不到输出时不应运行。屏幕关闭时,我已经可以运行代码了(例如通过使用screen_state flutter插件或使用Miguel Ruivo提供的ScreenStateObserver,但它有局限性。我无法使用{{1}来弹出路线) }。我还想大致了解一下屏幕关闭时Flutter的影响。

1 个答案:

答案 0 :(得分:0)

您想看看WidgetsBindingObserver mixin,因为它将为您的小部件状态提供不同的应用程序生命周期。

然后,您想在initState()上订阅

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
  }

并删除dispose()上的监听器

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

并访问didChangeAppLifecycleState()

上的不同状态
  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
     switch (state) {
      case AppLifecycleState.resumed:
        print('app resumed');
        break;
      
      case AppLifecycleState.inactive:
        print('app inactive');
        break;
      
      case AppLifecycleState.paused:
        print('app paused');
        break;
    
      case AppLifecycleState.detached:
        print('app deatched');
        break;
    }
  }