flutter firebase Auth 中不同类型帐户的注销按钮

tah*_*mis 1 dart firebase-authentication google-signin flutter

我有一个带有多个登录选项(电子邮件和密码、Google 帐户、电话号码)的 flutter 应用程序。用户登录应用程序后,他将拥有一个抽屉。该抽屉内有一个注销按钮,当用户按下该按钮时,应将其注销并将其送回注册页面。所以我一直在使用 firebase auth 的注销实例 await FirebaseAuth.instance.signOut();

但是自从我添加了谷歌登录选项后,我开始面临一个问题,即对于谷歌注销,我需要先断开用户连接await googleSignIn.disconnect(); 所以我将这一行添加到注销功能中,如下所示:

  Future<void> SignOut() async {
 await googleSignIn.disconnect();
 await FirebaseAuth.instance.signOut();
 Navigator.pushAndRemoveUntil(
   context,
   MaterialPageRoute(
     builder: (BuildContext context) => AuthPage(),
   ),
       (route) => false,
 );}
Run Code Online (Sandbox Code Playgroud)

当用户使用 google 登录时,此按钮工作正常,但如果他使用不同的方法登录,则会引发错误:

未处理的异常:PlatformException(状态,无法断开连接。,null,null)

如何一键处理不同类型的用户退出?

tah*_*mis 5

Future<void> SignOut() async {
if (googleSignIn.currentUser != null){
  await googleSignIn.disconnect();
  await FirebaseAuth.instance.signOut();}
else{
  await FirebaseAuth.instance.signOut();}
Run Code Online (Sandbox Code Playgroud)