在Flutter应用中如何在没有上下文的情况下进行导航?

时间:2018-10-24 06:16:23

标签: flutter

我有一个应用程序可以使用OneSignal接收推送通知。我做了一个通知打开处理程序,应在单击通知时打开特定的屏幕。我如何导航到没有上下文的屏幕。或如何在应用启动时打开特定屏幕。我的代码:

original.map(function(config){
   return {
      label:config.id,
      value:config.desc
   }
})

首次打开该应用程序时,我可以实现此目的,但只有在我关闭该应用程序并重新打开它的情况下,它才能打开主页。我想那是因为上下文已更改。

请帮助!

2 个答案:

答案 0 :(得分:4)

在这里查看: https://github.com/brianegan/flutter_redux/issues/5#issuecomment-361215074

您可以为导航设置全局键:

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

将其传递给MaterialApp:

new MaterialApp(
      title: 'MyApp',
      onGenerateRoute: generateRoute,
      navigatorKey: key,
    );

推路线:

navigatorKey.currentState.pushNamed('/someRoute');

答案 1 :(得分:0)

您可以使用这个出色的插件: https://pub.dev/packages/get

软件包中的描述:一个一致的导航库,使您可以在代码中的任何位置(无上下文)在屏幕之间导航,打开对话框并显示小吃栏。

Get.to(NextScreen()); // look at this simplicity :)
Get.back(); //  pop()
Get.off(NextScreen()); // clears the previous routes and opens a new screen.