监听页面状态,主要用到了 WidgetsBindingObserver
在页面的mian.dart文件中, with WidgetsBindingObserver,并设置监听。
具体实现:
最后记得销毁实例
具体的实现方式, 思否的这个有点坑,会加很多 /,
class MyApp extends StatefulWidget {
@override
\_MyAppState createState() => \_MyAppState();
}
class \_MyAppState extends State<MyApp> with WidgetsBindingObserver {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this); // 添加观察者监听
}
// 页面的生命周期,是否在前台或者后台的判断
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state) {
case AppLifecycleState.inactive: // 处于这种状态的应用程序应该假设它们可能在任何时候暂停。
print('这个是状态11111111');
break; case AppLifecycleState.resumed:// 应用程序可见,前台
print('这个是状态222222>>>>...前台');
break; case AppLifecycleState.paused: // 应用程序不可见,后台
print('这个是状态33333>>>>...后台');
break; case AppLifecycleState.detached:
print('这个是状态44444>>>>...好像是断网了');
break; }
}
// 内存回调
@override
void didHaveMemoryPressure() {
super.didHaveMemoryPressure();
print("当内存过低的时候==");
}
// 应用尺寸改变时回调,目测还没想到,可能视频播放会用
@override
void didChangeMetrics() {
super.didChangeMetrics();
Size size = WidgetsBinding.instance.window.physicalSize;
print("宽:${size.width} 高:${size.height}");
}
// 屏幕亮度发生变化的回调
@override
void didChangePlatformBrightness() {
super.didChangePlatformBrightness();
print("亮度发生了变化了");
}
@override
Widget build(BuildContext context) {
return MaterialApp(
onGenerateRoute: onGenerateRoute,
theme: ThemeData(primaryColor: Colors.blue),
home: Login(),
);
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。