在Flutter中,有没有监听导航变化的方法?
例如:在
当执行上述代码时,我希望在
例如:在
Widget A
中触发了导航:Navigator.of(context).pushNamed('/chat');
当执行上述代码时,我希望在
Widget A
的子元素中触发一个事件。这是否可能?Widget A
中触发了导航:Navigator.of(context).pushNamed('/chat');
Widget A
的子元素中触发一个事件。这是否可能?final RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();
然后将以下内容添加到根MaterialApp组件中:
MaterialApp(
theme: ThemeData(),
navigatorObservers: [routeObserver],
)
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');
}
...
}
routeObserver.subscribe(this, ModalRoute.of(context) as PageRoute<dynamic>);
和final route = ModalRoute.of(context)?.settings.name;
- Sina Seirafi