在main.dart中使用Navigator获取当前上下文

时间:2020-01-18 18:50:34

标签: flutter navigator

是否有机会在main.dart上获取当前上下文?我正在使用共享意图来监听应用程序链接,我需要重定向以指定页面。但是我不知道如何使用上下文。

  @override
  Widget build(BuildContext context) {

  ReceiveSharingIntent.getInitialText().then((String val){
   //some logic
   Navigator.pushNamed(context, ....);
  });

  return MaterialApp(
        title: 'MyApp',
        initialRoute: Routes.home,
        onGenerateRoute: (RouteSettings settings) {
          switch (settings.name) {
             case Routes.home:
             return SimplePageRoute(builder: (context) => HomeScreen());
             break;
          }
        }
   );
  }

我遇到了这个错误

未处理的异常:导航器请求的上下文 不包括导航器。

好的,我知道了,但是如何在该位置获取当前上下文?

1 个答案:

答案 0 :(得分:0)

好,我用 navigatorKey 修复了它!

  final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState();

  @override
  Widget build(BuildContext context) {

  ReceiveSharingIntent.getInitialText().then((String val){
   //some logic
   navigatorKey.currentState.pushNamed(Routes.myPage);
  });

  return MaterialApp(
        title: 'MyApp',
        initialRoute: Routes.home,
        navigatorKey: navigatorKey,
        onGenerateRoute: (RouteSettings settings) {
           switch (settings.name) {
           case Routes.home:
           return SimplePageRoute(builder: (context) => HomeScreen());
           break;
          }
        }
   );
  }