繁体   English   中英

如何使用 flutter 中的 web 应用程序检查用户是否使用 firebase 登录?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM