Google signin in flutter

Flutter sign in with Google in Android (without firebase) | by Snir David |  Flutter Community | Medium

First, add these packages to your .yaml file

  firebase_core: ^0.5.0
  firebase_auth: ^0.18.0+1
  google_sign_in: ^4.5.3


Add key tool path in debug and release mode

  signingConfigs {
        debug {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        }
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        }
    }
  

Then use this function on button click

  
  final GoogleSignIn _googleSignIn = GoogleSignIn();
  final FirebaseAuth _auth = FirebaseAuth.instance;

  Future googleSignIn() async {
    await Firebase.initializeApp();
    return await _googleSignIn.signIn().then((value) async {
      if (value != null) {
        final GoogleSignInAuthentication googleSignInAuthentication =
            await value.authentication;
        final AuthCredential credential = GoogleAuthProvider.credential(
          accessToken: googleSignInAuthentication.accessToken,
          idToken: googleSignInAuthentication.idToken,
        );
        final UserCredential authResult =
            await _auth.signInWithCredential(credential);
        final User? user = authResult.user;
        assert(user!.isAnonymous);
        assert(await user!.getIdToken() != null);
        final User? currentUser = _auth.currentUser;
        assert(user!.uid == currentUser!.uid);
        print(currentUser!.uid);
        if (currentUser != null) {
          if (currentUser.displayName != null) {
            Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) => HomeScreen(),
              ),
            );
          } else {
            Navigator.pushReplacement(context,
                MaterialPageRoute(builder: (context) => AddProfileData()));
          }
        }
        return currentUser;
      } else {
        return null;
      }
    });
  }

Post a Comment

Previous Post Next Post

Subscribe Us


Get tutorials, Flutter news and other exclusive content delivered to your inbox. Join 1000+ growth-oriented Flutter developers subscribed to the newsletter

100% value, 0% spam. Unsubscribe anytime