WidgetsBindingObserver

WidgetsBindingObserver

我实现了 WidgetsBindingObserver ,但该应用程序从未发送到后台,因此它无法识别 AppLifecycleState.resumed这是当前的实现


  @override
  void didChangeAppLifecycleState(AppLifecycleState state) async {
    print('\n\ndidChangeAppLifecycleState');
    switch (state) {
      case AppLifecycleState.resumed:
        print('\n\nresumed');
        _mymethod();
        break;
      case AppLifecycleState.inactive:
        print('\n\ninactive');
        break;
      case AppLifecycleState.paused:
        print('\n\npaused');
        break;
      case AppLifecycleState.detached:
        print('\n\ndetached');
        break;
    }
  }
模拟我在android中做下一个过程
  • 作为 --release
  • 运行项目
  • 使用 WidgetsBindingObserver
  • 打开小部件
  • 打开另一个应用程序(如 Chrome 或手机设置)
  • 返回应用程序

  • 返回应用程序时,我可以在屏幕上看到我的小部件,该应用程序不会重新启动,但控制台上没有任何打印内容,不会发生 print('\n\ndidChangeAppLifecycleState');_mymethod(); 从未执行的事件

    最佳答案

    WidgetsBindingObserver mixin 比仅仅实现接口(interface)需要更多的工作。您还需要将以下内容添加到您的小部件状态类:

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

    关于flutter didChangeAppLifecycleState 从不运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63641554/

    10-12 04:27