首先要在main.dart文件里创建全局路由监听对象
RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();
传入MaterialApp的navigatorObservers属性里
navigatorObservers: [routeObserver],
在需要的页面里使用routeObserver加入监听:
1.在该页面的State混入RouteAware
class _DailyofficeState extends State<DailyofficePage> with RouteAware {
2.重写didChangeDependencies方法加入监听
@override
void didChangeDependencies() {
super.didChangeDependencies();
routeObserver.subscribe(this, ModalRoute.of(context));
}
3.在页面dispose时销毁监听
@override
void dispose() {
routeObserver.unsubscribe(this);
super.dispose();
}
4.重写需要监听的事件方法
当Push到该页面时:
@override
void didPush() {
print('didPush');
}
当Pop到该页面时:
@override
void didPopNext() {
print('didPopNext');
}
当该页面Push到其他页面时:
@override
void didPushNext() {
print('didPushNext');
}
当该页面被Pop时:
@override
void didPop() {
print('didPop');
}
2022.6.11:
注册监听入参类型有变化
routeObserver.subscribe(this, ModalRoute.of(context) as PageRoute);