hen*_*dra 3 navigation flutter
我的应用仅在首次启动时显示一些介绍屏幕。首次启动后,显示的第一个屏幕应该是我的HomePage。我尝试了以下路线:
"/" -> HomePage()
"/intro" -> IntroPage()
Run Code Online (Sandbox Code Playgroud)
然后initialRoute像这样设置:
initialRoute: isFirstLaunch ? "/intro" : "/"
Run Code Online (Sandbox Code Playgroud)
通过该配置,Flutter首先将is HomePage()放在导航堆栈上,并将IntroPage()on放在顶部。这很糟糕,因为加载了,所以它会请求权限并且占用大量资源。在我明确导航到主页之前,不应该加载它。initialRoute"/intro"HomePage()CameraPreview
我也尝试了这种配置:
"/" -> IntroPage()
"/home" -> HomePage()
Run Code Online (Sandbox Code Playgroud)
然后我有了IntroPage()按后堆栈,这也不是我想要的。
知道如何解决吗?
直接将所需的小部件加载为您的MaterialApp应用程序怎么样home:
return MaterialApp(
home: isFirstLaunch? IntroScreen():HomeScreen(),
);
Run Code Online (Sandbox Code Playgroud)
"intro": (BuildContext context) => IntroPage()
"home": (BuildContext context) => HomePage()
Run Code Online (Sandbox Code Playgroud)
确保两条路由都是没有父级的顶级路由。
MaterialAppinitialRoute属性的文档对这种行为的解释如下:
如果路由包含斜杠,则将其视为“深层链接”,并且在推送此路由之前,还将推送通向此路由的路由。例如,如果路由是 /a/b/c,那么应用程序将按顺序加载三个路由 /a、/a/b 和 /a/b/c。
| 归档时间: |
|
| 查看次数: |
1430 次 |
| 最近记录: |