在flutter中,我们可能会是这样的逻辑: 打开app的时候判断有没有登录,如果没有登录就显示登录页面,如果登录了就显示主页面。我们路由可能是这样的:

'/login': (context)  => LoginPage(),
'/': (context) => HomePage(),

在main.dart中,有一个变量firstPage, 更加是否登录来设置它的值,当没有登录的时候就是firstPage=’/login’, 并传入MaterialApp构造函数。

MaterialApp(
...
initialRoute: firstPage
...
)

这个时候,我们的HomePage会先加载,再加载LoginPage, 这是为什么呢?
查了官方的资料,它有说明。解决方法也在里面说了。

MaterialApp(
...
initialRoute: firstPage
onGenerateInitialRoutes: (name) {
	//是数组,因为初始化页面可以是/a/b
	return [MaterialPageRoute(builder: (context){
       return LoginPage();
      }),]
}
...
)

这样就不会先加载’/'了。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐