如果用户未登录,我想导航到另一个页面。我尝试将此代码添加到initState,但我无法在生命周期的这个阶段使用导航。还有其他选择吗?
这也不会在StatefulWidget或State的构造函数中起作用。从它看起来我必须控制路由。
// Where can I apply this code.
if (auth.currentUser == null) {
Navigator.of(context).pushNamed(SignInPage.routeName);
}
答案 0 :(得分:2)
提出了类似的问题here。
虽然技术上可以通过后期回调做你想做的事情,但你可能不想在这里推出一条新路线到Widget build() {
return new StreamBuilder(
stream: googleSignIn.onCurrentUserChanged,
builder: (context, user) {
return user.data != null ? new HomePage() : new SignInPage();
}
);
}
,因为你没有&#39 ; t希望用户能够按下登录页面上的后退按钮并返回主页。此外,您可能希望通过将用户带回登录屏幕来处理用户注销的情况。
考虑在主屏幕的构建功能中使用这样的东西。
<div id = "allBody">
<div id = "image">
<img src = "https://vignette2.wikia.nocookie.net/mafiagame/images/2/23/Unknown_Person.png/revision/latest?cb=20151119092211" id = "image">
</div>
<div id = "line"></div>
</div>
如果您使用的是Google登录
#allBody {
display: inline;
}
#image {
width: 200px;
height: 200px;
border-radius: 50%;
padding-right: 30px;
}
#line {
height: 200px;
width: 7.5px;
border-radius: 20px;
border: none;
background-color: cornflowerBlue;
}