当我打开应用程序或在后台运行时,不会调用didChangeAppLifecycleState(),也不会执行print语句.

   import 'package:flutter/widgets.dart';
   import 'package:flutter/material.dart';


   void main(){
    runApp(
    MaterialApp(
      home: Home(),
    )
   );
   }


   class Home extends StatefulWidget {
   @override
    _HomeState createState() => _HomeState();
   }

   class _HomeState extends State<Home> with WidgetsBindingObserver{
   AppLifecycleState state;
   @override
   void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
   }
  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  void didChangeAppLifeCycleState(AppLifecycleState appLifecycleState) {
    state = appLifecycleState;
    print(appLifecycleState);
    print(":::::::");
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: Center(
          child:Text("hi")
        ),
      ),
    );
  }
}
}

didChangeAppLifeCycleState()中的打印语句未执行.

推荐答案

有一个拼写错误("Lifecycle"中的小写"c"),应该是didChangeAppLifecycleState:

@override
void didChangeAppLifecycleState(AppLifecycleState state) {
   state = state;
   print(state);
   print(":::::::");
}

更新:不要忘记在initState()中添加观察者,并在Dispose()中删除观察者

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

// ...

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

希望有帮助!

Dart相关问答推荐

什么相当于 dart 中的 JAVA ThreadLocal?

VSCode Flutter Dart 启动慢的建议

Flutter:合并两张图片,作为单张图片存储在本地存储中

自定义声音推送通知不起作用

如何在 Flutter/dart 中获取一周中特定日期的日期?

Flutter:如何正确实现 FlutterError.OnError

如何在DartPad中导入库?

在 Dart 中,是否可以有一个 const 闭包映射?

如何在flatter中使用SQFlite更新数据库表

为什么这个文件会自动创建自己 generate_plugin_registrant.dart

没有 AppBar 的 Flutter 应用设计

如何在flatter中读取本地json导入?

Flutter:测试期间的计时器问题

如何将 Stream 转换为 List

Dart:实例变量在私有类中应该是私有的还是公共的?

如何在 Angular.Dart 中以编程方式添加组件?

如何在 Dart 2 中将 List 更改为 List

使用 Futures 时 .then() 和 .whenCompleted() 方法之间的区别?

Dart 中的 List.shuffle()?

dart列表最小值/最大值