flutter - 如何获取当前路线的名称?

标签 flutter flutter-navigation

我需要获取我当前的路线名称。我用 GlobalKey创建 navigatorSevice相反 Navigator.of(context)在每一页。所以我创建了 navKey :

class Keys {
    static final GlobalKey<NavigatorState> navKey = GlobalKey<NavigatorState>();
}
当我想重定向到另一个页面时,我会写 Keys.navKey.currentState.pushNamed()pushReplacementNamed或其他一些方法。
我想知道我在 Interceptor 中的当前路线,在那里我没有上下文。

最佳答案

您已经可以从 GlobalKey<NavigatorState>() 访问 BuildContext .
这里 - navKey.currentContext ,像这样插上 - ModalRoute.of(navKey.currentContext).settings.name .
但这会失败,我建议制作 navKey属性 setter/getter 。你可以这样做..

final App = Helper.I;

class Helper {
    static Helpers get I => Helpers._();

    Helpers._();

    GlobalKey<NavigatorState> get navKey => GlobalKey<NavigatorState>();
    
    BuildContext get context => navKey.currentContext;

    double get height => MediaQuery.of(context).size.height;

    double get width => MediaQuery.of(context).size.width;
}
这样,您始终可以在应用程序的任何位置(甚至在您的业务逻辑中)访问 BuildContext。
用法 - App.contextApp.width (对于设备宽度)

关于flutter - 如何获取当前路线的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59250733/

相关文章:

flutter - 如何在子小部件中禁用底部的SafeArea或更改其颜色?

flutter - 可重新排序列表中的弹出菜单不合适

flutter :如何在将导航器与页面一起使用时处理后退按钮按下

flutter - 如何使用Flutter同Page导航与Getx路由或Material路由?

flutter - 如何在flutter中更改文本字段的模糊字符?

flutter - 有没有办法从Ropsten Testnet获取usdt?

dart - dart 中的流落后一步

flutter - 异步等待 Navigator.push() - 出现 linter 警告 : use_build_context_synchronously

android - Flutter Navigator 2.0 - 从 URL 启动应用程序时路由器没有收到深层链接?

flutter - 导航时如何在抖动中修复黑屏?