From 04288e0d15f2788bb769a95cc341b3a16acbd5a5 Mon Sep 17 00:00:00 2001 From: AYM1607 Date: Sat, 9 Mar 2019 21:47:04 -0600 Subject: [PATCH] The login screen now redirects to the home screen if a user successfully logs in --- lib/src/resources/authService.dart | 7 ++++++- lib/src/screens/home_screen.dart | 14 +++++++++++++- lib/src/screens/login_screen.dart | 13 +++++++++++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/lib/src/resources/authService.dart b/lib/src/resources/authService.dart index 2e93228..ed9dc55 100644 --- a/lib/src/resources/authService.dart +++ b/lib/src/resources/authService.dart @@ -22,9 +22,12 @@ class AuthService { _googleSignInProvider.onAuthStateChange.pipe(_user); } - Future googleLoginAndSignup() async { + Future googleLoginAndSignup() async { final user = await _googleSignInProvider.signIn(); + if (user == null) { + return null; + } // Create a new user in Firestore if this is the first time signing in. if (!await _firestoreProvider.userExists(user.email)) { final newUserModel = UserModel( @@ -37,6 +40,8 @@ class AuthService { ); await _firestoreProvider.createUser(newUserModel, user.uid); } + + return user; } Future signOut() { diff --git a/lib/src/screens/home_screen.dart b/lib/src/screens/home_screen.dart index 295919b..509e16d 100644 --- a/lib/src/screens/home_screen.dart +++ b/lib/src/screens/home_screen.dart @@ -1,12 +1,24 @@ import 'package:flutter/material.dart'; +import '../resources/authService.dart'; + class HomeScreen extends StatelessWidget { + final _auth = authService; + Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Main Screen'), ), - body: Text('Tasks go here'), + body: MaterialButton( + onPressed: () => _auth.signOut(), + child: Text( + 'SignOut', + style: TextStyle( + color: Colors.white, + ), + ), + ), ); } } diff --git a/lib/src/screens/login_screen.dart b/lib/src/screens/login_screen.dart index d51f9b1..c9b1b50 100644 --- a/lib/src/screens/login_screen.dart +++ b/lib/src/screens/login_screen.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -6,7 +8,7 @@ import '../widgets/logo.dart'; import '../widgets/gradient_button.dart'; class LoginScreen extends StatelessWidget { - final AuthService _authService = authService; + final _authService = authService; Widget build(BuildContext context) { return Scaffold( @@ -23,7 +25,7 @@ class LoginScreen extends StatelessWidget { Expanded( child: Center( child: GradientButton( - onTap: () => _authService.googleLoginAndSignup(), + onTap: () => onLoginButtonTap(context), height: 50, width: 310, radius: 25, @@ -38,6 +40,13 @@ class LoginScreen extends StatelessWidget { ); } + Future onLoginButtonTap(BuildContext context) async { + final user = await _authService.googleLoginAndSignup(); + if (user != null) { + Navigator.of(context).pushNamed('home/'); + } + } + Widget getButtonBody() { return Row( mainAxisSize: MainAxisSize.min,