问题
当从路由B页面返回路由A页面后,A页面需要进行数据刷新。因此需要监听路由变化
解决
使用RouteObserver
进行录音监听
创建全局变量,不在任何类中
dart
final RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();
在main.dart中添加监听
dart
Widget build(BuildContext context) {
return MaterialApp(
...
navigatorObservers: <NavigatorObserver>[routeObserver],
...
);
}
订阅观察者
dart
class _MyPageWidgetState extends State<MyPageWidget> with RouteAware {
@override
void didChangeDependencies() {
super.didChangeDependencies();
// 订阅路由变化
final ModalRoute? modalRoute = ModalRoute.of(context);
if (modalRoute is PageRoute) {
routeObserver.subscribe(this, modalRoute);
}
}
@override
void dispose() {
routeObserver.unsubscribe(this);
super.dispose();
}
void didPopNext() {
debugPrint('路由回来了');
}
}
当从其他路由页面返回MyPageWidget
页面时会触发didPopNext
方法,可以在该方法里执行查询等操作