Flutter获取当前路由信息和全局路由监听

1|0Flutter获取当前路由信息和全局路由监听

1|1获取当前路由名

1|0通过Flutter提供的方式

var routePath = ModalRoute.of(context).settings.name; print("current route: $name")

1|0通过GetX的方式

var routePath = Get.currentRoute; print("current route: $name");

PS 必须确保注册了路由,否则无法使获取到

1|2配置全局路由监听

1|0创建一个MyRouteObserver继承RouteObserver类

  • 重写RouteObserver中的方法
class MyRouteObserver<R extends Route<dynamic>> extends RouteObserver<R> { @override void didPush(Route route, Route? previousRoute) { super.didPush(route, previousRoute); print( 'didPush route: ${route.settings.name}, previousRoute:${previousRoute?.settings.name}'); } @override void didPop(Route route, Route? previousRoute) { super.didPop(route, previousRoute); print( 'didPop route: ${route.settings.name}, previousRoute:${previousRoute?.settings.name}'); } @override void didReplace({Route? newRoute, Route? oldRoute}) { super.didReplace(newRoute: newRoute, oldRoute: oldRoute); print('didReplace newRoute: $newRoute,oldRoute:$oldRoute'); } @override void didRemove(Route route, Route? previousRoute) { super.didRemove(route, previousRoute); print('didRemove route: $route,previousRoute:$previousRoute'); } @override void didStartUserGesture(Route route, Route? previousRoute) { super.didStartUserGesture(route, previousRoute); print('didStartUserGesture route: $route,previousRoute:$previousRoute'); } @override void didStopUserGesture() { super.didStopUserGesture(); print('didStopUserGesture'); } }
  • 然后在MaterialApp中添加
final MyRouteObserver<PageRoute> routeObserver = MyRouteObserver<PageRoute>(); MaterialApp(navigatorObservers: routeObserver])

这样就可以监听到所有路由pop,push,remove等动作,并且在其中加入自己的业务逻辑,不管是模态,dialog,bottomsheet都可以监听到。

参考


__EOF__

本文作者R1cardo
本文链接https://www.cnblogs.com/r1cardo/p/16055765.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   R1cardo  阅读(4348)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示