flutter_监听页面状态

监听页面状态,主要用到了 WidgetsBindingObserver
在页面的mian.dart文件中, with WidgetsBindingObserver,并设置监听。

具体实现:
flutter_监听页面状态_第1张图片

最后记得销毁实例

flutter_监听页面状态_第2张图片

具体的实现方式, 思否的这个有点坑,会加很多 /,

class MyApp extends StatefulWidget {  
  @override  
  \_MyAppState createState() => \_MyAppState();  
}  
class \_MyAppState extends State 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();  
  }  
}

你可能感兴趣的:(flutter)