我在一个名为auth.dart的单独文件中的authservice类中有GoogleSignin方法。
// in AuthService class
/.../
Future<FirebaseUser> googleSignIn() async {
loading.add(true);
GoogleSignInAccount googleUser = await _googleSignIn.signIn();
GoogleSignInAuthentication googleAuth = await googleUser.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
final FirebaseUser user = await _auth.signInWithCredential(credential);
updateUserData(user);
print("signed in " + user.displayName);
loading.add(false);
return user;
}
/.../
在登录页面(log in page.dart)中,我有一个Google登录按钮。
// in _LogInPageState class
/.../
socialIcons(
colors: [Color(0xffcb2d3e), Color(0xffef473a)],
icon: Icon(
FontAwesomeIcons.google,
color: Colors.white,
),
onPressed: () {
final login = authService.googleSignIn();
login.then(/*navigate to home page using named routes*/);
},
),
/.../
我正在尝试在onPressed中完成GoogleSignin()后执行以下代码。
Navigator.of(context).pushNamedAndRemoveUntil(
'/home', (Route<dynamic> route) => false);
我该怎么做?
最佳答案
当你的googleSignIn
返回未来。
您可以简单地使用then
并导航到所需的小部件。
googleSignIn().then((FirebaseUser user) {
//Navigation code here
}).catchError((e) {
//Error if any
});
关于flutter - 如何使用googleSignIn future方法中的命名路由进行导航?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57141867/