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

And*_*huk 7 flutter flutter-navigation

我需要获取我当前的路线名称。我习惯于在每个页面中GlobalKey创建。所以我创建:navigatorSeviceNavigator.of(context)navKey

class Keys {
    static final GlobalKey<NavigatorState> navKey = GlobalKey<NavigatorState>();
}
Run Code Online (Sandbox Code Playgroud)

当我想重定向到另一个页面时,我会编写Keys.navKey.currentState.pushNamed()pushReplacementNamed其他一些方法。

我想知道我在 Interceptor 中的当前路线,在那里我没有上下文。

Bre*_*dan 0

您已经可以从 访问 BuildContext GlobalKey<NavigatorState>()

在这里- navKey.currentContext,像这样插入- ModalRoute.of(navKey.currentContext).settings.name

但这会失败,我建议将该navKey属性设置为吸气剂。你可以这样做..

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;
}
Run Code Online (Sandbox Code Playgroud)

这样,您始终可以在应用程序中的任何位置(甚至在业务逻辑中)访问 BuildContext。

用法-App.contextApp.width(对于设备宽度)