问题

当从路由B页面返回路由A页面后,A页面需要进行数据刷新。因此需要监听路由变化

解决

使用RouteObserver进行录音监听

创建全局变量,不在任何类中

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

在main.dart中添加监听

Widget build(BuildContext context) {
  return MaterialApp(
    ...
    navigatorObservers: <NavigatorObserver>[routeObserver],
    ...
  );
}

订阅观察者

class _MyPageWidgetState extends State<MyPageWidget> with RouteAware {
  
  void didChangeDependencies() {
    super.didChangeDependencies();
     // 订阅路由变化
    final ModalRoute? modalRoute = ModalRoute.of(context);
    if (modalRoute is PageRoute) {
      routeObserver.subscribe(this, modalRoute);
    }
  }

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

  void didPopNext() {
    debugPrint('路由回来了');
  }
}

当从其他路由页面返回MyPageWidget页面时会触发didPopNext方法,可以在该方法里执行查询等操作
在这里插入图片描述

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部