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
+84
View File
@@ -0,0 +1,84 @@
// File generated by FlutterFire CLI.
// ignore_for_file: lines_longer_than_80_chars, avoid_classes_with_only_static_members
import 'package:firebase_core/firebase_core.dart' show FirebaseOptions;
import 'package:flutter/foundation.dart'
show defaultTargetPlatform, kIsWeb, TargetPlatform;
/// Default [FirebaseOptions] for use with your Firebase apps.
///
/// Example:
/// ```dart
/// import 'firebase_options.dart';
/// // ...
/// await Firebase.initializeApp(
/// options: DefaultFirebaseOptions.currentPlatform,
/// );
/// ```
class DefaultFirebaseOptions {
static FirebaseOptions get currentPlatform {
if (kIsWeb) {
return web;
}
switch (defaultTargetPlatform) {
case TargetPlatform.android:
return android;
case TargetPlatform.iOS:
return ios;
case TargetPlatform.macOS:
return macos;
case TargetPlatform.windows:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for windows - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
case TargetPlatform.linux:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for linux - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
default:
throw UnsupportedError(
'DefaultFirebaseOptions are not supported for this platform.',
);
}
}
static const FirebaseOptions web = FirebaseOptions(
apiKey: 'AIzaSyCNpUV_4cMEL9QZx7NESXK7QAlRjRGwx_Y',
appId: '1:245204384533:web:1b8f0b4c1d9ae21d9f871c',
messagingSenderId: '245204384533',
projectId: 'prosapp-5747a',
authDomain: 'prosapp-5747a.firebaseapp.com',
storageBucket: 'prosapp-5747a.appspot.com',
);
static const FirebaseOptions android = FirebaseOptions(
apiKey: 'AIzaSyBp7vsJvD6oXz0FORBLEeIELwId4a2onHQ',
appId: '1:245204384533:android:12920d0fe3ec9b999f871c',
messagingSenderId: '245204384533',
projectId: 'prosapp-5747a',
storageBucket: 'prosapp-5747a.appspot.com',
);
static const FirebaseOptions ios = FirebaseOptions(
apiKey: 'AIzaSyDUhnkNkeEPkqcwVo5EWr63q3oEX6bDGic',
appId: '1:245204384533:ios:aeb233e55c5ddf7a9f871c',
messagingSenderId: '245204384533',
projectId: 'prosapp-5747a',
storageBucket: 'prosapp-5747a.appspot.com',
androidClientId: '245204384533-7p2j0go97da4gp062s7enop0ab8q7a7p.apps.googleusercontent.com',
iosClientId: '245204384533-nv7e2n7d4vj5kfkc55mlmiiju0ch2qhn.apps.googleusercontent.com',
iosBundleId: 'com.example.prosappco',
);
static const FirebaseOptions macos = FirebaseOptions(
apiKey: 'AIzaSyDUhnkNkeEPkqcwVo5EWr63q3oEX6bDGic',
appId: '1:245204384533:ios:aeb233e55c5ddf7a9f871c',
messagingSenderId: '245204384533',
projectId: 'prosapp-5747a',
storageBucket: 'prosapp-5747a.appspot.com',
androidClientId: '245204384533-7p2j0go97da4gp062s7enop0ab8q7a7p.apps.googleusercontent.com',
iosClientId: '245204384533-nv7e2n7d4vj5kfkc55mlmiiju0ch2qhn.apps.googleusercontent.com',
iosBundleId: 'com.example.prosappco',
);
}
+5
View File
@@ -3,9 +3,14 @@ import 'package:prosappco/src/provider/google_sign.dart';
import 'package:prosappco/src/screens/login.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:provider/provider.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const MyApp());
}
+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),
+84
View File
@@ -1 +1,85 @@
import 'package:flutter/material.dart';
class WelcomeScreen extends StatefulWidget {
const WelcomeScreen({super.key});
@override
State<WelcomeScreen> createState() => _WelcomeScreenState();
}
class _WelcomeScreenState extends State<WelcomeScreen> {
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
resizeToAvoidBottomInset: false,
backgroundColor: Color(0xFFD6F4FF),
body: Stack(
children: [
Container(
margin: const EdgeInsets.only(top: 130),
width: double.infinity,
height: 800,
decoration: const BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topRight: Radius.circular(50),
topLeft: Radius.circular(50))),
),
Container(
margin: const EdgeInsets.only(top: 20, left: 30),
child: const Image(
image: AssetImage('images/logo_prosapp.png'),
width: 180,
height: 100,
),
),
Container(
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 20),
margin: const EdgeInsets.only(top: 170),
child: Align(
alignment: Alignment.topCenter,
child: Text(
'Bienvenido',
style: TextStyle(
color: Color(0xFF262626),
fontSize: 38.0,
fontWeight: FontWeight.bold,
),
),
),
),
Container(
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 20),
margin: const EdgeInsets.only(top: 280, left: 50, right: 50),
child: Column(children: [
Padding(
padding: const EdgeInsets.only(bottom: 40),
child: Center(
child: ElevatedButton(
onPressed: () {},
child: Text(
'Solicitar un servicio',
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 18,
),
),
style: ElevatedButton.styleFrom(
primary: Color(0xFF2BA4EC),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(50),
),
elevation: 0,
minimumSize: Size(260, 60),
),
)),
),
]),
),
],
),
));
}
}