Register con gmail y screen welcome

This commit is contained in:
Juan Felipe Duarte
2023-03-28 17:35:52 -05:00
parent 5853df637a
commit 1884b82d83
9 changed files with 304 additions and 6 deletions
+36 -4
View File
@@ -2,7 +2,11 @@ import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:prosappco/src/provider/google_sign.dart';
import 'package:prosappco/src/screens/login.dart';
import 'package:prosappco/src/screens/welcome.dart';
import 'package:provider/provider.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:prosappco/src/screens/register.dart';
class LoginEmailScreen extends StatefulWidget {
@@ -12,6 +16,21 @@ class LoginEmailScreen extends StatefulWidget {
State<LoginEmailScreen> createState() => _LoginEmailScreenState();
}
final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn googleSignIn = GoogleSignIn();
Future<UserCredential> signInWithGoogle() async {
final GoogleSignInAccount? googleSignInAccount = await googleSignIn.signIn();
final GoogleSignInAuthentication googleSignInAuthentication =
await googleSignInAccount!.authentication;
final AuthCredential credential = GoogleAuthProvider.credential(
accessToken: googleSignInAuthentication.accessToken,
idToken: googleSignInAuthentication.idToken,
);
return await _auth.signInWithCredential(credential);
}
class _LoginEmailScreenState extends State<LoginEmailScreen> {
bool _obscureText = true;
@@ -77,10 +96,23 @@ class _LoginEmailScreenState extends State<LoginEmailScreen> {
Padding(
padding: EdgeInsets.only(bottom: 20),
child: ElevatedButton(
onPressed: () {
final provider = Provider.of<GoogleSignProvider>(context,
listen: false);
provider.googleLogin();
onPressed: () async {
try {
final UserCredential userCredential =
await signInWithGoogle();
// Si la autenticación es exitosa, realiza una acción
// Por ejemplo, navegar a otra pantalla:
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => WelcomeScreen()));
} catch (e) {
// Si ocurre un error durante la autenticación, muestra un mensaje al usuario
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(
'Error al iniciar sesion intentalo de nuevo'),
));
}
},
style: ElevatedButton.styleFrom(
primary: Color(0xFF2BA4EC),