[英]Flutter | How to listen for navigation event?
在Flutter中,有沒有辦法監聽導航變化?
示例:在Widget A
中觸發導航:
Navigator.of(context).pushNamed('/chat');
執行上述代碼時,我希望在Widget A
的子級中觸發一個事件。 這可能嗎?
使用 RouteObserver:
final RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();
然后將此添加到根 materialApp 小部件:
MaterialApp(
theme: ThemeData(),
navigatorObservers: [routeObserver],
)
我們需要在每個可能被推送或彈出到路由堆棧的小部件中實現 RouteAware。
class Screen extends State<Screen3> with RouteAware{
...
@override
void didChangeDependencies() {
super.didChangeDependencies();
routeObserver.subscribe(this, ModalRoute.of(context));
}
@override
void dispose() {
routeObserver.unsubscribe(this);
super.dispose();
}
@override
void didPush() {
final route = ModalRoute.of(context).settings.name;
print('didPush route: $route');
}
@override
void didPopNext() {
final route = ModalRoute.of(context).settings.name;
print('didPopNext route: $route');
}
@override
void didPushNext() {
final route = ModalRoute.of(context).settings.name;
print('didPushNext route: $route');
}
@override
void didPop() {
final route = ModalRoute.of(context).settings.name;
print('didPop route: $route');
}
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.