dart - AppLifcycleState.didChangeLifecycleState( ) 函数在应用程序进入前台或后台时不被调用
问题描述
当我打开我的应用程序或在后台运行时,不会调用 didChangeAppLifecycleState() 并且不会执行打印语句。
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() 中的打印语句未执行。
解决方案
这不是 OP 问题的答案,每次我遇到这个问题时,我都忘了打电话WidgetsBinding.instance.addObserver(this);
给initState()
.
如果didChangeAppLifecycleState
没有为您调用,请不要忘记将您的实现类添加为侦听器。
请参阅和中的 OP 代码,initState()
并dispose()
确保您也这样做。
推荐阅读
- javascript - GitHub 部署后 JavaScript 无法正常工作
- c# - 如果异步方法不使用 await 会发生什么?
- sql - 使用 IN a where 使用 case 语句
- java - 如何在 Android 中使用 Google Drive API 更新文件夹?
- c++ - BatchNormalization 层构建
- sql-server - SSAS 的可编程性如何?
- python - 如何创建两个矩形之间发生碰撞的矩形
- python - 对df中的唯一值执行分组计数的有效方法
- reactjs - React-验证数据库中是否有用户
- cmake - 如何构建取决于目标 A 的执行和输出的目标 B