我在Firebase上使用Flutter 翼.当我try 使用邮箱和密码注销时,它工作得很好,但当我try 使用谷歌时,它不起作用.

以下是我的代码: 说

try {
    switch (user.providerData[0].providerId) {
    case 'password':
      await FirebaseAuth.instance.signOut();
      break;
    case 'google.com':
      final GoogleSignIn googleSignIn = GoogleSignIn();
      await googleSignIn.signOut();
      break;
}
} on FirebaseAuthException catch (e) {
    showAuthException(e, context);
}

我在试这个

try {
    switch (user.providerData[0].providerId) {
    case 'password':
      await FirebaseAuth.instance.signOut();
      break;
    case 'google.com':
      final GoogleSignIn googleSignIn = GoogleSignIn();
      await googleSignIn.signOut();
      break;
}
} on FirebaseAuthException catch (e) {
    showAuthException(e, context);
}

推荐答案

请参考下面的代码:),这样就可以了.


您的代码:

final GoogleSignIn googleSignIn = GoogleSignIn();
await googleSignIn.signOut();

问题是您已经创建了googleSignIn变量并从该变量注销.

您也可以try 使用googleSignIn.isSignedIn();进行判断,这将返回布尔值.


工作代码.

class GoogleServiceProvider extends ChangeNotifier {
  static final GoogleSignIn _googleSignIn = GoogleSignIn(); // <----

  GoogleSignInAccount? _user;

  GoogleSignInAccount? get user => _user;

  Future<GoogleSignInAccount?> logInWithGmail() async {
    final googleUser = await _googleSignIn.signIn();
    if (googleUser != null) {
      _user = googleUser;
      notifyListeners();
    }
    return null;
  }

  Future logOut() async {
    await _googleSignIn.signOut();
    notifyListeners();
  }
}

Flutter相关问答推荐

Flutter 导致底部溢出

Flutter -修改子小部件中的AppBar

Android Emulator冻结,但在调整窗口大小时解冻

下拉图标未居中

Flutter 翼doctor 显示的错误,我似乎不能修复.问题:系统32、Android工具链、Windows 10 SDK

CMakeLists.txt处的CMake错误:3(项目)找不到指定的Visual Studio实例

如何实现Flutter 梳理机图像的小量移动

有没有什么方法可以加快在Flutter 中加载Quill HTML编辑器的速度?

Flutter /dart 列表.第一个子类列表中的Where()错误

在Flutter 小部件测试中找不到框中的AssetImage装饰

Flutter Android Google Sign-in error:ApiException:10在确认软件包名称、SHA-1 fingerprint 和设置同意页面后出现异常

Flutter 日期时间格式

如何将小部件代码移动到另一个文件以获得更好的可读性

Flutter中有没有办法区分鼠标左右平移?

断言失败:std::move(hal_2_1_verifier).Run(). 初始化,LE音频客户端至少需要Bluetooth音频HAL V2.1

使用 Riverpod 和 copyWith 方法更新数据类中列表中变量的值

如何更改中心的圆形进度指示器

Flutter Websockets MacOS:相同的代码在调试模式下有效,但在发布模式下无效:(操作系统错误:提供了 node 名或服务名..)

改变步进器的线条 colored颜色 Flutter

如何在 flutter 中创建渐变按钮