我的应用程序仅在首次启动应用程序时显示一些介绍屏幕。首次启动后,要显示的第一个屏幕应该是我的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(),
);