Flutter里的viewWillAppear

首先要在main.dart文件里创建全局路由监听对象

RouteObserver routeObserver = RouteObserver();

传入MaterialApp的navigatorObservers属性里

navigatorObservers: [routeObserver],
image.png

在需要的页面里使用routeObserver加入监听:
1.在该页面的State混入RouteAware

class _DailyofficeState extends State 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');
 }
image.png

2022.6.11:
注册监听入参类型有变化

routeObserver.subscribe(this, ModalRoute.of(context) as PageRoute);

你可能感兴趣的:(Flutter里的viewWillAppear)