login fix

This commit is contained in:
Juan Felipe Duarte
2023-06-05 14:23:13 -05:00
parent 3733fbc297
commit 952ab0269b
+254 -293
View File
@@ -89,219 +89,142 @@ class _LoginEmailScreenState extends State<LoginEmailScreen> {
padding: padding:
const EdgeInsets.symmetric(horizontal: 0, vertical: 20), const EdgeInsets.symmetric(horizontal: 0, vertical: 20),
margin: const EdgeInsets.only(top: 210, left: 50, right: 50), margin: const EdgeInsets.only(top: 210, left: 50, right: 50),
child: Column(children: [ child: Column(
Padding( children: [
padding: const EdgeInsets.only(bottom: 20), Padding(
child: ElevatedButton( padding: const EdgeInsets.only(bottom: 20),
onPressed: () async { child: ElevatedButton(
await AuthenticationRepository.instance onPressed: () async {
.signInWithGoogle(); await AuthenticationRepository.instance
}, .signInWithGoogle();
style: ElevatedButton.styleFrom( },
backgroundColor: const Color(0xFF2BA4EC), style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder( backgroundColor: const Color(0xFF2BA4EC),
borderRadius: BorderRadius.circular(50), shape: RoundedRectangleBorder(
), borderRadius: BorderRadius.circular(50),
elevation: 0,
minimumSize: const Size(230, 60),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: const [
Text(
'Entrar con Google ',
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 18,
),
), ),
SizedBox(width: 5), elevation: 0,
FaIcon(FontAwesomeIcons.google), minimumSize: const Size(230, 60),
],
)),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 5),
child: Row(
children: const [
Expanded(
child: Divider(
color: Colors.black38,
thickness: 1,
), ),
), child: Row(
Padding( mainAxisAlignment: MainAxisAlignment.center,
padding: EdgeInsets.symmetric(horizontal: 10), children: const [
child: Text("ó"), Text(
), 'Entrar con Google ',
Expanded( style: TextStyle(
child: Divider( color: Colors.white,
color: Colors.black38, fontWeight: FontWeight.bold,
thickness: 1, fontSize: 18,
),
),
SizedBox(width: 5),
FaIcon(FontAwesomeIcons.google),
],
)),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 5),
child: Row(
children: const [
Expanded(
child: Divider(
color: Colors.black38,
thickness: 1,
),
), ),
), Padding(
], padding: EdgeInsets.symmetric(horizontal: 10),
), child: Text("ó"),
), ),
const Padding( Expanded(
padding: EdgeInsets.only(bottom: 5), child: Divider(
child: Align( color: Colors.black38,
alignment: Alignment.topLeft, thickness: 1,
child: Text('Email', ),
style: TextStyle( ),
fontSize: 18.0, color: Color(0xFF65676B))), ],
),
),
Padding(
padding: const EdgeInsets.only(bottom: 20),
child: TextFormField(
controller: controller.email,
validator: (String? value) {
if (value == null || value.isEmpty) {
return 'Por favor ingrese un email';
}
final RegExp emailRegExp =
RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$');
if (!emailRegExp.hasMatch(value)) {
return 'Por favor ingrese un email válido';
}
return null;
},
decoration: const InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Color.fromARGB(255, 184, 0, 0)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
hintText: 'Hello@gmail.com',
fillColor: Color.fromARGB(255, 239, 239, 239),
filled: true,
prefixIcon: Icon(Icons.email_outlined),
), ),
), ),
), const Padding(
const Padding( padding: EdgeInsets.only(bottom: 5),
child: Align(
alignment: Alignment.topLeft,
child: Text('Email',
style: TextStyle(
fontSize: 18.0, color: Color(0xFF65676B))),
),
),
FormEmail(controller: controller),
const Padding(
padding: EdgeInsets.only(bottom: 5), padding: EdgeInsets.only(bottom: 5),
child: Align( child: Align(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
child: Text('Password', child: Text('Password',
style: TextStyle( style: TextStyle(
fontSize: 18.0, color: Color(0xFF65676B))), fontSize: 18.0, color: Color(0xFF65676B))),
)),
Padding(
padding: const EdgeInsets.only(bottom: 50),
child: TextFormField(
controller: controller.password,
obscureText: _obscureText,
validator: (value) {
if (value == null || value.isEmpty) {
return 'Por favor ingrese una contraseña';
}
return null;
},
decoration: InputDecoration(
enabledBorder: const OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
focusedBorder: const OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
border: const OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
errorBorder: const OutlineInputBorder(
borderSide: BorderSide(
color: Color.fromARGB(255, 184, 0, 0)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
hintText: 'Contraseña',
fillColor: const Color.fromARGB(255, 239, 239, 239),
filled: true,
prefixIcon: const Icon(Icons.lock_outline),
suffixIcon: IconButton(
icon: Icon(
_obscureText
? Icons.visibility
: Icons.visibility_off,
color: Colors.grey,
),
onPressed: () {
setState(() {
_obscureText = !_obscureText;
});
},
),
), ),
), ),
), Padding(
Padding( padding: const EdgeInsets.only(bottom: 50),
padding: const EdgeInsets.only(bottom: 40), child: TextFormField(
child: Center( controller: controller.password,
child: PrimaryButtom( obscureText: _obscureText,
onPressed: () { validator: (value) {
if (_formKey.currentState!.validate()) { if (value == null || value.isEmpty) {
LoginEmailController.instance.loginUser( return 'Por favor ingrese una contraseña';
controller.email.text.trim(), }
controller.password.text.trim(), return null;
); },
} decoration: InputDecoration(
}, enabledBorder: const OutlineInputBorder(
label: 'Iniciar'), borderSide:
), BorderSide(color: Color(0xFFECECEC)),
), borderRadius: BorderRadius.all(
RichText( Radius.circular(50),
text: TextSpan( )),
style: const TextStyle( focusedBorder: const OutlineInputBorder(
fontSize: 16.0, borderSide:
color: Color(0xFF65676B), BorderSide(color: Color(0xFFECECEC)),
fontFamily: 'Poppins', borderRadius: BorderRadius.all(
), Radius.circular(50),
children: [ )),
const TextSpan(text: 'No estas registrado? '), border: const OutlineInputBorder(
WidgetSpan( borderSide:
child: GestureDetector( BorderSide(color: Color(0xFFECECEC)),
onTap: () { borderRadius: BorderRadius.all(
Navigator.pushReplacementNamed( Radius.circular(50),
context, '/register'); )),
}, errorBorder: const OutlineInputBorder(
child: const Text( borderSide: BorderSide(
'Registrarse', color: Color.fromARGB(255, 184, 0, 0)),
style: TextStyle( borderRadius: BorderRadius.all(
fontSize: 16.0, Radius.circular(50),
color: Color(0xFF2BA4EC), )),
fontWeight: FontWeight.w600, hintText: 'Contraseña',
), fillColor: const Color.fromARGB(255, 239, 239, 239),
filled: true,
prefixIcon: const Icon(Icons.lock_outline),
suffixIcon: IconButton(
icon: Icon(
_obscureText
? Icons.visibility
: Icons.visibility_off,
color: Colors.grey,
), ),
onPressed: () {
setState(() {
_obscureText = !_obscureText;
});
},
), ),
), ),
], ),
), ),
) PaddingButtomBottom(
]), formKey: _formKey, controller: controller),
const RichTxtBottom()
],
),
), ),
), ),
], ],
@@ -434,62 +357,17 @@ class _LoginEmailScreenState extends State<LoginEmailScreen> {
fontSize: 18.0, fontSize: 18.0,
color: Color(0xFF65676B))), color: Color(0xFF65676B))),
)), )),
Padding( FormEmail(controller: controller),
padding: const EdgeInsets.only(bottom: 20), const Padding(
child: TextFormField( padding: EdgeInsets.only(bottom: 5),
controller: controller.email, child: Align(
validator: (String? value) { alignment: Alignment.topLeft,
if (value == null || value.isEmpty) { child: Text('Password',
return 'Por favor ingrese un email'; style: TextStyle(
} fontSize: 18.0,
final RegExp emailRegExp = color: Color(0xFF65676B))),
RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$');
if (!emailRegExp.hasMatch(value)) {
return 'Por favor ingrese un email válido';
}
return null;
},
decoration: const InputDecoration(
border: OutlineInputBorder(
borderSide:
BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
enabledBorder: OutlineInputBorder(
borderSide:
BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
focusedBorder: OutlineInputBorder(
borderSide:
BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Color.fromARGB(255, 184, 0, 0)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
hintText: 'Hello@gmail.com',
fillColor: Color.fromARGB(255, 239, 239, 239),
filled: true,
prefixIcon: Icon(Icons.email_outlined),
),
), ),
), ),
const Padding(
padding: EdgeInsets.only(bottom: 5),
child: Align(
alignment: Alignment.topLeft,
child: Text('Password',
style: TextStyle(
fontSize: 18.0,
color: Color(0xFF65676B))),
)),
Padding( Padding(
padding: const EdgeInsets.only(bottom: 50), padding: const EdgeInsets.only(bottom: 50),
child: TextFormField( child: TextFormField(
@@ -547,49 +425,9 @@ class _LoginEmailScreenState extends State<LoginEmailScreen> {
), ),
), ),
), ),
Padding( PaddingButtomBottom(
padding: const EdgeInsets.only(bottom: 40), formKey: _formKey, controller: controller),
child: Center( const RichTxtBottom()
child: PrimaryButtom(
onPressed: () {
if (_formKey.currentState!.validate()) {
LoginEmailController.instance.loginUser(
controller.email.text.trim(),
controller.password.text.trim(),
);
}
},
label: 'Iniciar'),
),
),
RichText(
text: TextSpan(
style: const TextStyle(
fontSize: 16.0,
color: Color(0xFF65676B),
fontFamily: 'Poppins',
),
children: [
const TextSpan(text: 'No estas registrado? '),
WidgetSpan(
child: GestureDetector(
onTap: () {
Navigator.pushReplacementNamed(
context, '/register');
},
child: const Text(
'Registrarse',
style: TextStyle(
fontSize: 16.0,
color: Color(0xFF2BA4EC),
fontWeight: FontWeight.w600,
),
),
),
),
],
),
)
]), ]),
), ),
), ),
@@ -603,3 +441,126 @@ class _LoginEmailScreenState extends State<LoginEmailScreen> {
); );
} }
} }
class FormEmail extends StatelessWidget {
const FormEmail({
super.key,
required this.controller,
});
final LoginEmailController controller;
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.only(bottom: 20),
child: TextFormField(
controller: controller.email,
validator: (String? value) {
if (value == null || value.isEmpty) {
return 'Por favor ingrese un email';
}
final RegExp emailRegExp =
RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$');
if (!emailRegExp.hasMatch(value)) {
return 'Por favor ingrese un email válido';
}
return null;
},
decoration: const InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color.fromARGB(255, 184, 0, 0)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
hintText: 'Hello@gmail.com',
fillColor: Color.fromARGB(255, 239, 239, 239),
filled: true,
prefixIcon: Icon(Icons.email_outlined),
),
),
);
}
}
class PaddingButtomBottom extends StatelessWidget {
const PaddingButtomBottom({
super.key,
required GlobalKey<FormState> formKey,
required this.controller,
}) : _formKey = formKey;
final GlobalKey<FormState> _formKey;
final LoginEmailController controller;
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.only(bottom: 40),
child: Center(
child: PrimaryButtom(
onPressed: () {
if (_formKey.currentState!.validate()) {
LoginEmailController.instance.loginUser(
controller.email.text.trim(),
controller.password.text.trim(),
);
}
},
label: 'Iniciar'),
),
);
}
}
class RichTxtBottom extends StatelessWidget {
const RichTxtBottom({
super.key,
});
@override
Widget build(BuildContext context) {
return RichText(
text: TextSpan(
style: const TextStyle(
fontSize: 16.0,
color: Color(0xFF65676B),
fontFamily: 'Poppins',
),
children: [
const TextSpan(text: 'No estas registrado? '),
WidgetSpan(
child: GestureDetector(
onTap: () {
Navigator.pushReplacementNamed(context, '/register');
},
child: const Text(
'Registrarse',
style: TextStyle(
fontSize: 16.0,
color: Color(0xFF2BA4EC),
fontWeight: FontWeight.w600,
),
),
),
),
],
),
);
}
}