问题

当从路由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方法,可以在该方法里执行查询等操作
在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐