Мой логин с помощью кнопки Google сначала переходит на домашнюю страницу, а затем показывает параметры входа (учетные записи электронной почты). Что тут делать? - PullRequest
0 голосов
/ 16 мая 2019

Я развиваю свой проект в трепетании.Я пытаюсь сделать страницу входа в флаттер с помощью входа в Google аутентификации с помощью Firebase.Я его построил, но когда я нажимаю кнопку «Войти» с помощью кнопки «Google», она сначала переходит на домашнюю страницу, а затем показывает параметры входа, но это должно было быть наоборот.Помогите мне здесь.

Вот страница входа Страница входа .

Это отображается после того, как я нажимаю кнопку «Войти с помощью Google» введите описание изображения здесь.

И теперь, наконец, появляется опция входа в систему введите описание изображения здесь .

Это мой код

Google Войти при аутентификации

//google sign in
 final GoogleSignIn googleSignIn=  GoogleSignIn();
  final FirebaseAuth _auth = FirebaseAuth.instance;
  Future<FirebaseUser> _signIn() async{
    //GoogleSignInAccount googleSignInAccount = await googleSignIn.signIn();
    GoogleSignInAccount googleUser = await googleSignIn.signIn();
    GoogleSignInAuthentication googleAuth = await googleUser.authentication;
    final AuthCredential credential = GoogleAuthProvider.getCredential(
      idToken: googleAuth.idToken,
      accessToken: googleAuth.accessToken,
    );
    final FirebaseUser user = await _auth.signInWithCredential(credential);
    print("User Name: ${user.displayName}");
    assert(await user.getIdToken() != null);
    final FirebaseUser currentUser = await _auth.currentUser();
    assert(user.uid == currentUser.uid);
    return user;
  }

Кнопка входа

RaisedButton(
                child: Text('Login with Google'),
                color: Colors.orange,
                textColor: Colors.white,
                elevation: 7.0,
                onPressed: () { _signIn();
                  Navigator.of(context).pushReplacementNamed('/homepage');
                }
              ),

Ответы [ 3 ]

0 голосов
/ 16 мая 2019

другая возможность будет:

RaisedButton(
            child: Text('Login with Google'),
            color: Colors.orange,
            textColor: Colors.white,
            elevation: 7.0,
            onPressed: () {
              _signIn().then(() 
               {Navigator.of(context).pushReplacementNamed('/homepage')}); 
            }
          ),
0 голосов
/ 16 мая 2019

Вы переходите на домашний экран при нажатии кнопки как -

RaisedButton(
                    child: Text('Login with Google'),
                    color: Colors.orange,
                    textColor: Colors.white,
                    elevation: 7.0,
                    onPressed: () { _signIn();
                      Navigator.of(context).pushReplacementNamed('/homepage');
                    }
                  ),

Это должно быть как ниже-

RaisedButton(
                    child: Text('Login with Google'),
                    color: Colors.orange,
                    textColor: Colors.white,
                    elevation: 7.0,
                    onPressed: () { _signIn();

                    }
                  ),

После получения правильного ответа от входа в Google вы можете перейти на домашний экран, добавив «Navigator.of (context) .pushReplacementNamed ('/ homepage');"

0 голосов
/ 16 мая 2019

Зачем возвращать пользователя в _signIn(), если вы ничего не делаете с ним?

Вместо этого я бы переместил оператор навигации в конце _signIn(), потому что _signIn() - это async:

//google sign in
  final GoogleSignIn googleSignIn=  GoogleSignIn();
  final FirebaseAuth _auth = FirebaseAuth.instance;
  Future<FirebaseUser> _signIn() async{
    //GoogleSignInAccount googleSignInAccount = await googleSignIn.signIn();
    GoogleSignInAccount googleUser = await googleSignIn.signIn();
    GoogleSignInAuthentication googleAuth = await googleUser.authentication;
    final AuthCredential credential = GoogleAuthProvider.getCredential(
      idToken: googleAuth.idToken,
      accessToken: googleAuth.accessToken,
    );
    final FirebaseUser user = await _auth.signInWithCredential(credential);
    print("User Name: ${user.displayName}");
    assert(await user.getIdToken() != null);
    final FirebaseUser currentUser = await _auth.currentUser();
    assert(user.uid == currentUser.uid);
    Navigator.of(context).pushReplacementNamed('/homepage');
  }
RaisedButton(
                child: Text('Login with Google'),
                color: Colors.orange,
                textColor: Colors.white,
                elevation: 7.0,
                onPressed: () {
                  _signIn(); 
                }
              ),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...