flutter didChangeAppLifecycleState 从不运行

lin*_*ngo 3 dart flutter

我实现了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;
    }
  }
Run Code Online (Sandbox Code Playgroud)

模拟我在android中做下一个的过程

  1. 将项目作为 --release 运行
  2. 打开小部件 WidgetsBindingObserver
  3. 打开另一个应用程序(如 Chrome 或手机设置)
  4. 返回应用程序

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

Abi*_*n47 8

WidgetsBindingObserver混入需要比仅仅实现接口多做一些工作。您还需要将以下内容添加到您的小部件状态类:

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

@override
void dispose() {
  WidgetsBinding.instance.removeObserver(this);
  super.dispose();
}
Run Code Online (Sandbox Code Playgroud)