监听生命周期和系统的一些信息
class AppLifecycleReactor extends StatefulWidget {
const AppLifecycleReactor({ Key key }) : super(key: key);
@override
_AppLifecycleReactorState createState() => _AppLifecycleReactorState();
}
class _AppLifecycleReactorState extends State<AppLifecycleReactor> with WidgetsBindingObserver {
const AppLifecycleReactor({ Key key }) : super(key: key);
@override
_AppLifecycleReactorState createState() => _AppLifecycleReactorState();
}
class _AppLifecycleReactorState extends State<AppLifecycleReactor> with WidgetsBindingObserver {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
AppLifecycleState _notification;
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state) {
case AppLifecycleState.detached:
// 应用任然托管在flutter引擎上,但是不可见.
// 当应用处于这个状态时,引擎没有视图的运行.要不就是当引擎第一次初始化时处于attach视 图中,要不就是由于导航弹出导致的视图销毁后
break;
case AppLifecycleState.inactive:
// 应用在一个不活跃的状态,不会收到用户的输入
// 在ios上,这个状态相当于应用或者flutter托管的视图在前台不活跃状态运行.当有电话进来时候应用转到这个状态等
// 在安卓上,这个状态相当于应用或者flutter托管的视图在前台不活跃状态运行.另外一个activity获得焦点时,应用转到这个状态.比如分屏,电话等
// 在这状态的应用应该假设他们是可能被paused的.
break;
case AppLifecycleState.paused:
//应用当前对于用户不可见,不会响应用户输入,运行在后台.
break;
case AppLifecycleState.resumed:
// 应用可见,响应用户输入
break;
default:
}
}
// 访问功能有变化
@override
void didChangeAccessibilityFeatures() {
}
// 语言变化
@override
void didChangeLocales(List<Locale> locale) {
}
// 尺寸变化
@override
void didChangeMetrics() {
//通过 WidgetsBinding.instance.window.physicalSize可获取
}
// 亮度变化
@override
void didChangePlatformBrightness() {
}
///文字比例系数变化
@override
void didChangeTextScaleFactor() {
// 通过WidgetsBinding.instance.window.textScaleFactor可获取
}
// 内存过低
@override
void didHaveMemoryPressure() {
}
// 路由弹出时
@override
void didPopRoute() {
}
// 路由添加时
@override
void didPushRoute() {
}
@override
Widget build(BuildContext context) {
return Text("test");
}
}
网友评论