颤振导航器:动态初始路线



我的应用程序仅在首次启动应用程序时显示一些介绍屏幕。首次启动后,要显示的第一个屏幕应该是我的HomePage。我尝试了以下路线:

"/" -> HomePage()
"/intro" -> IntroPage()

然后像这样设置initialRoute

initialRoute: isFirstLaunch ? "/intro" : "/"

使用这种配置,Flutter 首先将HomePage()放在导航堆栈上,IntroPage()放在顶部,当initialRoute"/intro"时。这很糟糕,因为HomePage()加载一个CameraPreview,所以它会要求权限并且是资源密集型的。在我显式导航到主页之前,不应加载它。

我也尝试了这个配置:

"/" -> IntroPage()
"/home" -> HomePage()

然后我把IntroPage()放在后面,这也不是我想要的。

知道如何解决吗?

"intro": (BuildContext context) => IntroPage()
"home": (BuildContext context) => HomePage()

确保两个路由都是没有父路由的顶级路由。

MaterialApp 的initialRoute属性的文档按如下方式解释了此行为:

如果路由包含斜杠,则将其视为"深层链接", 在这条路线被推送之前,通往这条路线的路线是 也推了。例如,如果路由是/a/b/c,则应用将 从加载/a、/a/b 和/a/b/c 三条路由开始,其中 次序。

直接加载所需的小部件作为您的MaterialApp应用程序home怎么样:

return MaterialApp(
home: isFirstLaunch? IntroScreen():HomeScreen(),
);

相关内容

  • 没有找到相关文章

最新更新