![](/img/trans.png)
[英]Flutter Web and Firebase authentication: how to redirect not logged in user in flutter web?
[英]How to check user is logged in or not with firebase for web App in flutter?
我已经通过 firebase 验证了 futter Web App 以及移动平台 App。 但每当重建或重新运行 Web 应用程序时,它会将我带到登录屏幕,但我已经为登录或未登录的用户实现了代码,但无法正常工作。 它应该导航到主屏幕。
一段代码:
class LandingScreen extends StatefulWidget {
@override
_LandingScreenState createState() => _LandingScreenState();
}
class _LandingScreenState extends State<LandingScreen> {
bool isLoggedIn = false;
FirebaseUser _user;
@override
void initState() {
super.initState();
FirebaseAuth.instance.currentUser().then((user) {
if(user!=null){
print("user:${user.uid}");
setState(() {
_user = user;
isLoggedIn=true;
});
// Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(
// builder: (context)=>HomeScreen(user: user)), (route) => false);
}else{
setState(() {
isLoggedIn = false;
});
// Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(
// builder: (context)=>LoginScreen()), (route) => false);
}
});
}
@override
Widget build(BuildContext context){
return isLoggedIn?HomeScreen(user: _user):LoginScreen();
}
}
尝试删除 setState。 SetState 告诉小部件重新构建,但 InitState 在构建小部件之前运行,因此它在这里没有效果。 虽然它可能无法解决问题。
尝试以下操作:
@override
void initState() {
super.initState();
FirebaseAuth.instance.currentUser().then((res) {
print(res);
if (res != null) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Home(user: res)),
);
}
else
{
Navigator.push(
context,
MaterialPageRoute(builder: (context) => LoginScreen()),
);
}
});
}
currentUser()
是异步的,因此在then()
内部根据结果导航到不同的页面
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.