gpt4 book ai didi

flutter - 在 Flutter 中使用 Firebase/Google 登录时无法注销并重定向到登录页面

转载 作者:行者123 更新时间:2023-12-02 11:47:07 28 4
gpt4 key购买 nike

我正在致力于实现一个使用 Firebase 身份验证以及 Google-Sign 的 Flutter 应用。我已成功让 firebaseauth 正常登录/注销。根据身份验证状态的更改,我直接进入主页或登录页面。然后我实现了 Google Sign-in,它会自动将用户登录到 firebase。

这有效,我获得了提示所需的权限,等等。但是当我单击注销时,应用程序不会重定向到登录屏幕。我正在调用等待 firebaseAuth.instance.Signout() ...并且我相信它确实会删除用户..但它不会重定向。然后,当我尝试再次登录时,没有任何反应。

我尝试了许多不同的登录方式......我似乎无法弄清楚为什么它不会在注销时重定向。

这是我登录 Google 和 firebase 的登录逻辑:

    try {
final GoogleSignInAccount googleSignInAccount =
await _googleSignIn.signIn();
final GoogleSignInAuthentication googleSignInAuthentication =
await googleSignInAccount.authentication;

final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleSignInAuthentication.accessToken,
idToken: googleSignInAuthentication.idToken,
);

final FirebaseUser user = await _firebaseAuth.signInWithCredential(credential);

assert(!user.isAnonymous);
assert(await user.getIdToken() != null);

final FirebaseUser currentUser = await _firebaseAuth.currentUser();
assert(user.uid == currentUser.uid);
} catch (error) {
print(error);
}
notifyListeners();
}

这是我在 main.dart 中重定向到适当页面的逻辑:

    home: StreamBuilder(
stream: _firebaseAuth.onAuthStateChanged,
builder: (context, snapshot) {
if(snapshot.hasData){
return HomePage();
} else {
return Login();
}
},
)

这是我的 Signout() 逻辑

   Future<void> signOut() async {
await _firebaseAuth.signOut().catchError((error){
print(error.toString());
});
}

就我而言,我不想让用户从 Google 中注销,而只想从我的应用中注销。但我不明白为什么这不重定向。当我使用电子邮件/密码使用标准 Firebase 登录时,它工作正常。

最佳答案

经过大量研究后发现,如果您从 sideDrawer 组件调用 SignOut(),则不能只调用 Signout。你需要这样做。帮我解决了。

    FlatButton(
child: Text('Logout'),
onPressed: () {
Navigator.of(context).pop();
Navigator.of(context).pushReplacementNamed('/');
Provider.of<Auth>(context).signOut();
},
),

关于flutter - 在 Flutter 中使用 Firebase/Google 登录时无法注销并重定向到登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57828983/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com