Skip to content
This repository has been archived by the owner on Mar 19, 2021. It is now read-only.

Commit

Permalink
Fix bug: Prevent redirecting to second page on login failed
Browse files Browse the repository at this point in the history
  • Loading branch information
sbis04 committed Sep 4, 2020
1 parent 74ec403 commit ad503dc
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 29 deletions.
18 changes: 10 additions & 8 deletions lib/login_page.dart
Expand Up @@ -53,14 +53,16 @@ class _LoginPageState extends State<LoginPage> {
return OutlineButton(
splashColor: Colors.grey,
onPressed: () {
signInWithGoogle().whenComplete(() {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) {
return FirstScreen();
},
),
);
signInWithGoogle().then((result) {
if (result != null) {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) {
return FirstScreen();
},
),
);
}
});
},
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(40)),
Expand Down
52 changes: 31 additions & 21 deletions lib/sign_in.dart
Expand Up @@ -19,6 +19,7 @@
// SOFTWARE.

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:google_sign_in/google_sign_in.dart';

final FirebaseAuth _auth = FirebaseAuth.instance;
Expand All @@ -29,43 +30,52 @@ String email;
String imageUrl;

Future<String> signInWithGoogle() async {
await Firebase.initializeApp();

final GoogleSignInAccount googleSignInAccount = await googleSignIn.signIn();
final GoogleSignInAuthentication googleSignInAuthentication =
await googleSignInAccount.authentication;

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

final AuthResult authResult = await _auth.signInWithCredential(credential);
final FirebaseUser user = authResult.user;
final UserCredential authResult =
await _auth.signInWithCredential(credential);
final User user = authResult.user;

// Checking if email and name is null
assert(user.email != null);
assert(user.displayName != null);
assert(user.photoUrl != null);
if (user != null) {
// Checking if email and name is null
assert(user.email != null);
assert(user.displayName != null);
assert(user.photoURL != null);

name = user.displayName;
email = user.email;
imageUrl = user.photoUrl;
name = user.displayName;
email = user.email;
imageUrl = user.photoURL;

// Only taking the first part of the name, i.e., First Name
if (name.contains(" ")) {
name = name.substring(0, name.indexOf(" "));
}
// Only taking the first part of the name, i.e., First Name
if (name.contains(" ")) {
name = name.substring(0, name.indexOf(" "));
}

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

assert(!user.isAnonymous);
assert(await user.getIdToken() != null);
final User currentUser = _auth.currentUser;
assert(user.uid == currentUser.uid);

final FirebaseUser currentUser = await _auth.currentUser();
assert(user.uid == currentUser.uid);
print('signInWithGoogle succeeded: $user');

return '$user';
}

return 'signInWithGoogle succeeded: $user';
return null;
}

void signOutGoogle() async {
Future<void> signOutGoogle() async {
await googleSignIn.signOut();

print("User Sign Out");
print("User Signed Out");
}

0 comments on commit ad503dc

Please sign in to comment.