[英]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.