Firebase 尝试使用google登录,但始终返回null

Firebase 尝试使用google登录,但始终返回null,firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,嘿,伙计们,我正试图在Flitter中使用firebase登录google,但在下一页中它总是返回null 如何在登录谷歌后在下一页中获取当前用户 我已经与firebase连接并生成sha-1和sha-256 这是密码 登录屏幕.dart MaterialButton( height: 50, minWidth: double.maxFinite, child: Row( mainAxisAlignment: MainAxisAlignment.center,

嘿,伙计们,我正试图在Flitter中使用firebase登录google,但在下一页中它总是返回null

如何在登录谷歌后在下一页中获取当前用户

我已经与firebase连接并生成sha-1和sha-256

这是密码

登录屏幕.dart

MaterialButton(
    height: 50,
    minWidth: double.maxFinite,
    child: Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        FaIcon(FontAwesomeIcons.google, color: Colors.blue,),
        SizedBox(width: 10,),
        Text('Sign In With Google', style: TextStyle(color: Colors.blue),),
      ],
    ),
    elevation: 0,
    onPressed: () async {
      setState(() {
        _isSigningIn = true;
      });

      try {
        final user = await googleSignIn.signIn();
        final googleAuth = await user.authentication;

        final credential = GoogleAuthProvider.credential(
            accessToken: googleAuth.accessToken,
            idToken: googleAuth.idToken
        );

        final googleAccount = await FirebaseAuth.instance.signInWithCredential(credential);

        if(googleAccount != null) {
          Navigator.pushReplacementNamed(context, HomeScreen.id);
        }
      } catch (e) {
        final snackbar = SnackBar(content: Text(e.toString()));
        _scaffoldKey.currentState.showSnackBar(snackbar);
      } finally {
        setState(() {
          _isSigningIn = false;
        });
      }
    },
  ),
class HomeScreen extends StatefulWidget {
  static const String id = 'HomeScreen';

  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final _auth = FirebaseAuth.instance;
  User _currentUser;

  void getCurrentUser() async {
    try {
      var currentUser = await _auth.currentUser;

      if (currentUser != null) {
        _currentUser = currentUser;
      }
    } catch(e) {
      print(e);
    }
  }

  @override
  void initState() {
    super.initState();
    getCurrentUser();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(_currentUser.email),
      ),
    );
  }
}
主屏幕省道

MaterialButton(
    height: 50,
    minWidth: double.maxFinite,
    child: Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        FaIcon(FontAwesomeIcons.google, color: Colors.blue,),
        SizedBox(width: 10,),
        Text('Sign In With Google', style: TextStyle(color: Colors.blue),),
      ],
    ),
    elevation: 0,
    onPressed: () async {
      setState(() {
        _isSigningIn = true;
      });

      try {
        final user = await googleSignIn.signIn();
        final googleAuth = await user.authentication;

        final credential = GoogleAuthProvider.credential(
            accessToken: googleAuth.accessToken,
            idToken: googleAuth.idToken
        );

        final googleAccount = await FirebaseAuth.instance.signInWithCredential(credential);

        if(googleAccount != null) {
          Navigator.pushReplacementNamed(context, HomeScreen.id);
        }
      } catch (e) {
        final snackbar = SnackBar(content: Text(e.toString()));
        _scaffoldKey.currentState.showSnackBar(snackbar);
      } finally {
        setState(() {
          _isSigningIn = false;
        });
      }
    },
  ),
class HomeScreen extends StatefulWidget {
  static const String id = 'HomeScreen';

  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final _auth = FirebaseAuth.instance;
  User _currentUser;

  void getCurrentUser() async {
    try {
      var currentUser = await _auth.currentUser;

      if (currentUser != null) {
        _currentUser = currentUser;
      }
    } catch(e) {
      print(e);
    }
  }

  @override
  void initState() {
    super.initState();
    getCurrentUser();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(_currentUser.email),
      ),
    );
  }
}
类主屏幕扩展StatefulWidget{
静态常量字符串id='主屏幕';
@凌驾
_HomeScreenState createState()=>\u HomeScreenState();
}
类_homescrenstate扩展状态{
final _auth=FirebaseAuth.instance;
用户\u当前用户;
void getCurrentUser()异步{
试一试{
var currentUser=wait_auth.currentUser;
如果(currentUser!=null){
_currentUser=currentUser;
}
}捕获(e){
印刷品(e);
}
}
@凌驾
void initState(){
super.initState();
getCurrentUser();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(_currentUser.email),
),
);
}
}

谢谢

这一行是一个异步函数,正是因为这个原因,您收到null,您必须添加一个等待

final googleAccount=等待FirebaseAuth.instance.signInWithCredential(凭证)

除此之外,要访问当前用户的信息,您必须这样做

googleAccount.user