如何测试用户是否已登录,如果没有路由到我的Flutter应用中的其他页面?

时间:2017-06-18 18:45:00

标签: flutter

如果用户未登录,我想导航到另一个页面。我尝试将此代码添加到initState,但我无法在生命周期的这个阶段使用导航。还有其他选择吗?

这也不会在StatefulWidget或State的构造函数中起作用。从它看起来我必须控制路由。

// Where can I apply this code.
if (auth.currentUser == null) {
  Navigator.of(context).pushNamed(SignInPage.routeName);
}

1 个答案:

答案 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;
}