1 WidgetsBindingObserver
class StudentHomeScreenState extends ConsumerState<StudentHomeScreen> with WidgetsBindingObserver {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
//
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
print("state-====${state}");
}
}
WidgetsBindingObserver 监听的是整个app的前后台切换。(也可以理解为Flutter 是单页面应用,可能监听的就是原生单页面的生命周期)。
2 RouteAware
class _HomePageState extends State<HomePage> with RouteAware{
late PersistentTabController _controller;
@override
void initState() {
super.initState();
_controller = PersistentTabController();
}
@override
void dispose() {
super.dispose();
_controller.dispose();
RouteObserverUtil().unSubscribe(this);
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
RouteObserverUtil().subscribe(this, context);
}
@override
void didPushNext() {
super.didPushNext();
print("==============hoe,");
}
@override
void didPopNext() {
super.didPopNext();
}
}
RouteAware 通过监听页面的进出栈来决定是否刷新数据