Используйте Navigator в main.dart, чтобы получить текущий контекст - PullRequest
0 голосов
/ 18 января 2020

Есть ли шанс получить текущий контекст на 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 голосов
/ 19 января 2020

Хорошо, я исправил это с помощью 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;
          }
        }
   );
  }
...