The login screen now redirects to the home screen if a user successfully logs in

This commit is contained in:
Mariano Uvalle 2019-03-09 21:47:04 -06:00
parent 475b1d0bc1
commit 04288e0d15
3 changed files with 30 additions and 4 deletions

View file

@ -22,9 +22,12 @@ class AuthService {
_googleSignInProvider.onAuthStateChange.pipe(_user); _googleSignInProvider.onAuthStateChange.pipe(_user);
} }
Future<void> googleLoginAndSignup() async { Future<FirebaseUser> googleLoginAndSignup() async {
final user = await _googleSignInProvider.signIn(); final user = await _googleSignInProvider.signIn();
if (user == null) {
return null;
}
// Create a new user in Firestore if this is the first time signing in. // Create a new user in Firestore if this is the first time signing in.
if (!await _firestoreProvider.userExists(user.email)) { if (!await _firestoreProvider.userExists(user.email)) {
final newUserModel = UserModel( final newUserModel = UserModel(
@ -37,6 +40,8 @@ class AuthService {
); );
await _firestoreProvider.createUser(newUserModel, user.uid); await _firestoreProvider.createUser(newUserModel, user.uid);
} }
return user;
} }
Future<void> signOut() { Future<void> signOut() {

View file

@ -1,12 +1,24 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../resources/authService.dart';
class HomeScreen extends StatelessWidget { class HomeScreen extends StatelessWidget {
final _auth = authService;
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text('Main Screen'), title: Text('Main Screen'),
), ),
body: Text('Tasks go here'), body: MaterialButton(
onPressed: () => _auth.signOut(),
child: Text(
'SignOut',
style: TextStyle(
color: Colors.white,
),
),
),
); );
} }
} }

View file

@ -1,3 +1,5 @@
import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@ -6,7 +8,7 @@ import '../widgets/logo.dart';
import '../widgets/gradient_button.dart'; import '../widgets/gradient_button.dart';
class LoginScreen extends StatelessWidget { class LoginScreen extends StatelessWidget {
final AuthService _authService = authService; final _authService = authService;
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@ -23,7 +25,7 @@ class LoginScreen extends StatelessWidget {
Expanded( Expanded(
child: Center( child: Center(
child: GradientButton( child: GradientButton(
onTap: () => _authService.googleLoginAndSignup(), onTap: () => onLoginButtonTap(context),
height: 50, height: 50,
width: 310, width: 310,
radius: 25, radius: 25,
@ -38,6 +40,13 @@ class LoginScreen extends StatelessWidget {
); );
} }
Future<void> onLoginButtonTap(BuildContext context) async {
final user = await _authService.googleLoginAndSignup();
if (user != null) {
Navigator.of(context).pushNamed('home/');
}
}
Widget getButtonBody() { Widget getButtonBody() {
return Row( return Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,