在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();
}),]
}
...
)
这样就不会先加载’/'了。