当我打开我的应用程序或在后台运行时,未调用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()中的打印语句未执行。
答案 0 :(得分:11)
这不是 OP 问题的答案,每次遇到这个问题时,我都忘记在 WidgetsBinding.instance.addObserver(this);
中调用 initState()
。
如果没有为您调用 didChangeAppLifecycleState
,请不要忘记将您的实现类添加为侦听器。
查看 initState()
和 dispose()
中的 OP 代码并确保您也这样做。
答案 1 :(得分:0)
有一个拼写错误(“生命周期”中的小写字母“ c”),应为didChangeAppLifecycleState:
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
state = state;
print(state);
print(":::::::");
}
希望有帮助!