Я не могу перейти с домашней страницы на страницу входа после нажатия на кнопку выхода - PullRequest
0 голосов
/ 18 мая 2019

Я создал приложение для входа в систему с аутентификацией Google, используя флаттер.Я не могу войти на домашнюю страницу после нажатия кнопки «Вход», и я однажды вошел на домашнюю страницу, когда я создаю код аутентификации на самой странице входа.но теперь я использую другой файл для аутентификации с именем auth.dart, и я вызвал функцию оттуда на страницу входа и домашнюю страницу (где есть кнопка выхода).пожалуйста, помогите мне и скажите мне, как перейти на домашнюю страницу и с домашней страницы наоборот

//Here is my code for loginpage.dart

//button for login with google
 RaisedButton(
                child: Text('Login with Google'),
                color: Colors.orange,
                textColor: Colors.white,
                elevation: 7.0,
                onPressed: () { authService.googleSignIn();
                }
              ),

Вот мой код для аутентификации в auth.dart

class AuthService {
  final GoogleSignIn _googleSignIn=  GoogleSignIn();
  final FirebaseAuth _auth = FirebaseAuth.instance;

  Observable<FirebaseUser> user;
  Observable<Map<String, dynamic>> profile;
  PublishSubject loading = PublishSubject();

  AuthService() {
    if(_auth.currentUser()!= null) {
      print('Please Sign in');
    } else {
      googleSignIn();
    }

  }
  Future<FirebaseUser> googleSignIn() async{
    loading.add(true);
    //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);
  }

  void SignOut() {
    _auth.signOut();
  }
}

final AuthService authService = AuthService();

и наконец вот мой коддля Homepage.dart, где кнопка SignOut

MaterialButton(
                  onPressed: () {
                    authService.SignOut(); 
                  },
                child: Text('Log Out'),
              )

Я пробовал Navigator.of(context).pushReplacementNamed('landingpage');, но там указано неопределенное имя 'context'

, пожалуйста, помогите мне

1 Ответ

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