7

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

class Keys {
    static final GlobalKey<NavigatorState> navKey = GlobalKey<NavigatorState>();
}

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

我想知道我在拦截器中的当前路线,我没有上下文。

4

1 回答 1

0

您已经可以从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;
}

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

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

于 2020-08-21T00:51:55.733 回答