signInWithGoogle static method

Future<UserCredential?>? signInWithGoogle({
  1. required bool isSuccessDialog,
  2. required bool isErrorDialog,
  3. dynamic onSuccess(
    1. UserCredential? userCredential
    )?,
  4. dynamic onError(
    1. String? code,
    2. String? message
    )?,
})

Implementation

static Future<UserCredential?>? signInWithGoogle({
  required bool isSuccessDialog,
  required bool isErrorDialog,
  // Map<String, dynamic>? data,
  // Map<String, dynamic>? public,
  Function(UserCredential? userCredential)? onSuccess,
  Function(String? code, String? message)? onError,
}) async {
  UserCredential? userCredential;
  try {
    if (kIsWeb) {
      var googleProvider = GoogleAuthProvider();
      userCredential = await _auth.signInWithPopup(googleProvider);
    } else {
      final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();

      // Return null to prevent further exceptions if googleSignInAccount is null
      if (googleUser == null) return null;

      final GoogleSignInAuthentication? googleAuth =
          await googleUser.authentication;

      final googleAuthCredential = GoogleAuthProvider.credential(
        accessToken: googleAuth?.accessToken,
        idToken: googleAuth?.idToken,
      );
      userCredential = await _auth.signInWithCredential(googleAuthCredential);
    }

    // userPublicData = {};
    // await updateUserData(data);
    // await updateUserPublic(public);
    // await onLogin(userCredential.user);
    if (onSuccess != null) await onSuccess(userCredential);
    if (isSuccessDialog) {
      GetxFire.openDialog.messageSuccess("Sign in successfully!");
    }
  } on PlatformException catch (e) {
    debugPrint("[PlatformException] : ${e.code}");
    if (onError != null) await onError(e.code, e.message ?? e.toString());
    if (isErrorDialog) {
      GetxFire.openDialog.messageError(e.message ?? e.toString());
    }
  } on FirebaseAuthException catch (e) {
    debugPrint("[FirebaseAuthException] : ${e.code}");
    if (onError != null) await onError(e.code, e.message ?? e.toString());
    if (isErrorDialog) {
      GetxFire.openDialog.messageError(e.message ?? e.toString());
    }
  } catch (e) {
    debugPrint("[Exception] : ${e.toString()}");
    if (onError != null) await onError("undefined", e.toString());
    if (isErrorDialog) GetxFire.openDialog.messageError(e.toString());
  }
  return userCredential;
}