Flutter里的viewWillAppear

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

RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();

传入MaterialApp的navigatorObservers属性里

navigatorObservers: [routeObserver],
image.png

在需要的页面里使用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');
 }
image.png

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

routeObserver.subscribe(this, ModalRoute.of(context) as PageRoute);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容