Flutter中的viewWillAppear

2023-04-19  本文已影响0人  hyq1101

在iOS原生开发中,如果我们从页面A push 到页面B,再从页面B pop回页面A时,想刷新页面A的数据的话,可以在viewWillAppear生命周期方法中进行处理。在Flutter中也想实现此需求的话可以使用全局路由监听对象。
1、在main.dart中创建全局路由监听对象

RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();
image.png

2、将全局路由监听对象传入MaterialApp的navigatorObservers属性里

navigatorObservers: [routeObserver],
image.png

3、在需要使用的页面里的State混入RouteAware

class _QLUserContentState extends State<QLUserContent> with RouteAware {
image.png

4、重写didChangeDependencies方法加入监听

@override
void didChangeDependencies() {
  // TODO: implement didChangeDependencies
  super.didChangeDependencies();
  routeObserver.subscribe(this, ModalRoute.of(context) as PageRoute);
}

5、页面dispose时销毁监听

@override
void dispose() {
  routeObserver.unsubscribe(this);
  super.dispose();
}

6、重写需要监听的事件方法

// 1、Push到该页面时调用
@override
void didPush() {
    print('didPush');
}
 
// 2、Pop到该页面时调用
@override
void didPopNext() {
    print('didPopNext');
}
 
// 3、从该页面Push到其他页面时调用
@override
void didPushNext() {
    print('didPushNext');
}

// 4、该页面被Pop时调用
@override
void didPop() {
    print('didPop');
}
上一篇下一篇

猜你喜欢

热点阅读