【问题标题】:How to implement google authentication check如何实现谷歌身份验证检查
【发布时间】:2019-04-30 11:01:29
【问题描述】:

我正在尝试实施简单的身份验证检查来决定是转到一个页面还是另一个页面,但检查并不顺利。 有什么建议吗?

 _isAuth = false
    @override
  void initState() {
    if(FirebaseAuth.instance.currentUser() !=null){
      _isAuth = true;
    }
    super.initState();
  }

      @override
      Widget build(BuildContext context) {
        return ScopedModel<CProductModel>(
          model: _model,
          child: MaterialApp(
            routes: {
              '/': (BuildContext context) =>
                  !_isAuth ? LoginPage() : Products(_model),

编辑:我也试过这个:

final GoogleSignIn googleSignIn = GoogleSignIn();
  bool _isAuth = false;

  @override
  void initState() {
    print(_isAuth);

    if (googleSignIn.currentUser != null) {
      setState(() {
        print(_isAuth);

        _isAuth = true;
      });
    }
    super.initS

应用程序内的路由似乎可以工作,但如果我关闭应用程序并在每次我最终进入登录屏幕时再次访问

【问题讨论】:

    标签: dart flutter firebase-authentication


    【解决方案1】:
    FirebaseAuth.instance.currentUser() 
    

    会给出一个Future对象,所以当你使用at时

       @override
      void initState() {
        if(FirebaseAuth.instance.currentUser() !=null){
          _isAuth = true;
        }
        super.initState();
      }
    

    这里 FirebaseAuth.instance.currentUser() 给出了一个未来对象,它将继续执行,执行不会停止。 当 Future 对象返回一个对象时,您的执行已经完成。

    不要使用那个尝试使用这种方式

    FirebaseAuth.instance.currentUser().then((_firebaseUser){
    if(_firebaseUser!=null)
    {
    setState(() {
                      _isAuth=true
                    });
    }
    });
    

    【讨论】:

    • 尝试使用 StreamBuilder。
    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 2020-08-15
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    相关资源
    最近更新 更多