Flutter BaseWidget 实现onResume、onPause()
warning:
这篇文章距离上次修改已过444天,其中的内容可能已经有所变动。
在Flutter中,没有直接的生命周期回调像onResume和onPause。但是,你可以使用WidgetsBindingObserver接口来监听生命周期事件。
以下是一个简单的示例,展示如何在Flutter中实现类似Android的onResume和onPause:
import 'package:flutter/material.dart';
class LifecycleWatcher extends StatefulWidget {
@override
_LifecycleWatcherState createState() => _LifecycleWatcherState();
}
class _LifecycleWatcherState extends State<LifecycleWatcher> with WidgetsBindingObserver {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
switch (state) {
case AppLifecycleState.resumed:
print('App is resumed');
// Handle onResume
break;
case AppLifecycleState.inactive:
print('App is inactive');
// Handle onPause
break;
case AppLifecycleState.paused:
print('App is paused');
// Handle onPause
break;
case AppLifecycleState.detached:
print('App is detached');
// Handle cleanup
WidgetsBinding.instance.removeObserver(this);
break;
}
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('Lifecycle Watcher'),
),
);
}
}在这个例子中,_LifecycleWatcherState类通过with WidgetsBindingObserver来扩展WidgetsBindingObserver接口。然后,它实现了didChangeAppLifecycleState方法来响应生命周期状态的变化。这里,resumed状态被视为onResume,而inactive和paused状态被视为onPause。记得在dispose方法中移除观察者,以防止内存泄漏。
评论已关闭