問題
當從路由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
方法,可以在該方法里執行查詢等操作