diff --git a/lib/src/screens/code_validation.dart b/lib/src/screens/code_validation.dart index 83492fc..af0ddb5 100644 --- a/lib/src/screens/code_validation.dart +++ b/lib/src/screens/code_validation.dart @@ -15,148 +15,159 @@ class CodeValidationScreen extends StatelessWidget { var otp; return SafeArea( - child: Scaffold( - resizeToAvoidBottomInset: false, - backgroundColor: Color(0xFFD6F4FF), - body: Stack( - children: [ - Container( - margin: const EdgeInsets.only(top: 280), - width: double.infinity, - height: 600, - decoration: const BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.only( - topRight: Radius.circular(50), - topLeft: Radius.circular(50))), - ), - Container( - margin: const EdgeInsets.only(top: 120, left: 70, right: 70), - child: const Image(image: AssetImage('images/logo_prosapp.png')), - ), - Container( - padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 20), - margin: const EdgeInsets.only(top: 280, left: 25), - child: Row( - children: [ - IconButton( - icon: Icon( - Icons.arrow_back, - size: 30, - ), - onPressed: () { - Navigator.pop(context); - }, - ), - Text( - 'Validar código', - style: TextStyle( - color: Color(0xFF262626), - fontSize: 38.0, - fontWeight: FontWeight.bold, - ), - textAlign: TextAlign.right, - ), - ], - ), - ), - Container( - padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 20), - margin: const EdgeInsets.only(top: 350, left: 50, right: 50), - child: Column(children: [ - const Padding( - padding: EdgeInsets.only(bottom: 5), - child: Align( - alignment: Alignment.topLeft, - child: Text('Numero de celular', - style: TextStyle( - fontSize: 18.0, color: Color(0xFF65676B))), - )), - Padding( - padding: EdgeInsets.only(bottom: 20), + child: Scaffold( + backgroundColor: const Color(0xFFD6F4FF), + body: SingleChildScrollView( + reverse: true, + child: Stack( + children: [ + Container( + margin: const EdgeInsets.only(top: 280), + width: double.infinity, + height: MediaQuery.of(context).size.height / 1.5, + decoration: const BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.only( + topRight: Radius.circular(50), + topLeft: Radius.circular(50))), + ), + Container( + margin: const EdgeInsets.only(top: 120, left: 70, right: 70), + child: + const Image(image: AssetImage('images/logo_prosapp.png')), + ), + Container( + padding: + const EdgeInsets.symmetric(horizontal: 0, vertical: 20), + margin: const EdgeInsets.only(top: 280, left: 25), child: Row( - children: [ - Expanded( - child: TextField( - onChanged: (value) { - phoneNumber = value; - }, - controller: - TextEditingController(text: phoneNumber ?? ''), - decoration: InputDecoration( - border: InputBorder.none, - hintText: '', - suffixIcon: Icon(Icons.edit), - ), + children: [ + IconButton( + icon: Icon( + Icons.arrow_back, + size: 30, ), - ), - TextButton( - child: Text('Reenviar código'), onPressed: () { - if (phoneNumber!.isNotEmpty) { - PhoneAuthController.instance.phoneAuthentication( - phoneNumber!, - ); - } + Navigator.pop(context); }, ), + Text( + 'Validar código', + style: TextStyle( + color: Color(0xFF262626), + fontSize: 38.0, + fontWeight: FontWeight.bold, + ), + textAlign: TextAlign.right, + ), ], ), ), - Align( - alignment: Alignment.topLeft, - child: Padding( - padding: const EdgeInsets.only(bottom: 5), - child: Text('Codigo', - textAlign: TextAlign.left, - style: - TextStyle(fontSize: 18.0, color: Color(0xFF65676B))), + Container( + padding: + const EdgeInsets.symmetric(horizontal: 0, vertical: 20), + margin: const EdgeInsets.only(top: 350, left: 50, right: 50), + child: Column( + children: [ + const Padding( + padding: EdgeInsets.only(bottom: 5), + child: Align( + alignment: Alignment.topLeft, + child: Text('Numero de celular', + style: TextStyle( + fontSize: 18.0, color: Color(0xFF65676B))), + )), + Padding( + padding: EdgeInsets.only(bottom: 20), + child: Row( + children: [ + Expanded( + child: TextField( + onChanged: (value) { + phoneNumber = value; + }, + controller: TextEditingController( + text: phoneNumber ?? ''), + decoration: InputDecoration( + border: InputBorder.none, + hintText: '', + suffixIcon: Icon(Icons.edit), + ), + ), + ), + TextButton( + child: Text('Reenviar código'), + onPressed: () { + if (phoneNumber!.isNotEmpty) { + PhoneAuthController.instance + .phoneAuthentication( + phoneNumber!, + ); + } + }, + ), + ], + ), + ), + Align( + alignment: Alignment.topLeft, + child: Padding( + padding: const EdgeInsets.only(bottom: 5), + child: Text('Codigo', + textAlign: TextAlign.left, + style: TextStyle( + fontSize: 18.0, color: Color(0xFF65676B))), + ), + ), + Padding( + padding: EdgeInsets.only(bottom: 20), + child: OtpTextField( + numberOfFields: 6, + focusedBorderColor: Colors.blue, + fillColor: Colors.black.withOpacity(0.1), + filled: true, + keyboardType: TextInputType.number, + onSubmit: (code) { + otp = code; + OTPController.instance.verifyOTP(otp); + }, + ), + ), + Padding( + padding: EdgeInsets.only(bottom: 40), + child: Center( + child: ElevatedButton( + onPressed: () { + OTPController.instance.verifyOTP(otp); + }, + child: Text( + 'Validar código', + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 18, + ), + ), + style: ElevatedButton.styleFrom( + primary: Color(0xFF2BA4EC), // Color del botón + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular( + 50), // Bordes redondeados + ), + elevation: 0, + minimumSize: + Size(230, 60), // Tamaño mínimo del botón + ), + ), + ), + ), + ], ), ), - Padding( - padding: EdgeInsets.only(bottom: 20), - child: OtpTextField( - numberOfFields: 6, - focusedBorderColor: Colors.blue, - fillColor: Colors.black.withOpacity(0.1), - filled: true, - keyboardType: TextInputType.number, - onSubmit: (code) { - otp = code; - OTPController.instance.verifyOTP(otp); - }, - ), - ), - Padding( - padding: EdgeInsets.only(bottom: 40), - child: Center( - child: ElevatedButton( - onPressed: () { - OTPController.instance.verifyOTP(otp); - }, - child: Text( - 'Validar código', - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.bold, - fontSize: 18, - ), - ), - style: ElevatedButton.styleFrom( - primary: Color(0xFF2BA4EC), // Color del botón - shape: RoundedRectangleBorder( - borderRadius: - BorderRadius.circular(50), // Bordes redondeados - ), - elevation: 0, - minimumSize: Size(230, 60), // Tamaño mínimo del botón - ), - )), - ), - ]), + ], ), - ], + ), ), - )); + ); } } diff --git a/lib/src/screens/login.dart b/lib/src/screens/login.dart index 55a0411..82afe8f 100644 --- a/lib/src/screens/login.dart +++ b/lib/src/screens/login.dart @@ -23,153 +23,165 @@ class _LoginScreenState extends State { @override Widget build(BuildContext context) { return SafeArea( - child: Scaffold( - resizeToAvoidBottomInset: false, - backgroundColor: Color(0xFFD6F4FF), - body: Stack( - children: [ - Container( - margin: const EdgeInsets.only(top: 280), - width: double.infinity, - height: 600, - decoration: const BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.only( - topRight: Radius.circular(50), - topLeft: Radius.circular(50))), - ), - Container( - margin: const EdgeInsets.only(top: 120, left: 70, right: 70), - child: const Image(image: AssetImage('images/logo_prosapp.png')), - ), - Container( - padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 20), - margin: const EdgeInsets.only(top: 280, left: 30, right: 50), - child: Column(children: const [ - Align( - alignment: Alignment.topLeft, - child: Text( - 'Iniciar sesión', - style: TextStyle( - color: Color(0xFF262626), - fontSize: 38.0, - fontWeight: FontWeight.bold, - ), - ), + child: Scaffold( + backgroundColor: const Color(0xFFD6F4FF), + body: SingleChildScrollView( + reverse: true, + child: Stack( + children: [ + Container( + margin: const EdgeInsets.only(top: 280), + width: double.infinity, + height: MediaQuery.of(context).size.height / 1.5, + decoration: const BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.only( + topRight: Radius.circular(50), + topLeft: Radius.circular(50))), ), - ]), - ), - Container( - padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 20), - margin: const EdgeInsets.only(top: 350, left: 50, right: 50), - child: Column(children: [ - const Padding( - padding: EdgeInsets.only(bottom: 5), - child: Align( + Container( + margin: const EdgeInsets.only(top: 120, left: 70, right: 70), + child: + const Image(image: AssetImage('images/logo_prosapp.png')), + ), + Container( + padding: + const EdgeInsets.symmetric(horizontal: 0, vertical: 20), + margin: const EdgeInsets.only(top: 280, left: 30, right: 50), + child: Column(children: const [ + Align( alignment: Alignment.topLeft, - child: Text('Numero de celular', - style: TextStyle( - fontSize: 18.0, color: Color(0xFF65676B))), - )), - Form( - key: _formKey, - child: Padding( - padding: EdgeInsets.only(bottom: 5), - child: IntlPhoneField( - controller: controller.phoneNo, - initialCountryCode: 'CO', - onChanged: (phoneNo) { - completePhoneNumber = phoneNo.completeNumber; - }, - decoration: InputDecoration( - 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), - )), - fillColor: Color.fromARGB(255, 239, 239, 239), - filled: true, + child: Text( + 'Iniciar sesión', + style: TextStyle( + color: Color(0xFF262626), + fontSize: 38.0, + fontWeight: FontWeight.bold, + ), ), ), - ), + ]), ), - const Padding( - padding: EdgeInsets.only(bottom: 30), - child: Text('Un código será enviado a este numero de celular.', - textAlign: TextAlign.center, - style: TextStyle(fontSize: 13.0, color: Color(0xFF65676B))), - ), - Padding( - padding: const EdgeInsets.only(bottom: 30), - child: Center( - child: PrimaryButtom( - onPressed: () { - if (_formKey.currentState!.validate()) { - PhoneAuthController.instance.phoneAuthentication( - completePhoneNumber.trim(), - ); - Get.to( - () => CodeValidationScreen( - phoneNumber: completePhoneNumber.trim(), - ), - ); - } - }, - label: 'Enviar código', - ), - ), - ), - Padding( - padding: EdgeInsets.only(bottom: 27), - child: GestureDetector( - onTap: () { - Navigator.pushNamed(context, '/login'); - }, - child: Text( - 'Entrar con correo electronico', - style: TextStyle( - fontSize: 15.0, color: Color(0xFF65676B), - decoration: TextDecoration.underline, // Subrayado - ), - ), - ), - ), - RichText( - text: TextSpan( - style: TextStyle( - fontSize: 16.0, - color: Color(0xFF65676B), - fontFamily: 'Poppins', - ), + Container( + padding: + const EdgeInsets.symmetric(horizontal: 0, vertical: 20), + margin: const EdgeInsets.only(top: 350, left: 50, right: 50), + child: Column( children: [ - TextSpan(text: 'No estas registrado? '), - WidgetSpan( - child: GestureDetector( - onTap: () { - Navigator.pushNamed(context, '/register'); - }, - child: Text( - 'Registrarse', - style: TextStyle( - fontSize: 16.0, - color: Color(0xFF2BA4EC), - fontWeight: FontWeight.w600, + const Padding( + padding: EdgeInsets.only(bottom: 5), + child: Align( + alignment: Alignment.topLeft, + child: Text('Numero de celular', + style: TextStyle( + fontSize: 18.0, color: Color(0xFF65676B))), + )), + Form( + key: _formKey, + child: Padding( + padding: EdgeInsets.only(bottom: 5), + child: IntlPhoneField( + controller: controller.phoneNo, + initialCountryCode: 'CO', + onChanged: (phoneNo) { + completePhoneNumber = phoneNo.completeNumber; + }, + decoration: InputDecoration( + 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), + )), + fillColor: Color.fromARGB(255, 239, 239, 239), + filled: true, ), ), ), ), + const Padding( + padding: EdgeInsets.only(bottom: 30), + child: Text( + 'Un código será enviado a este numero de celular.', + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 13.0, color: Color(0xFF65676B))), + ), + Padding( + padding: const EdgeInsets.only(bottom: 30), + child: Center( + child: PrimaryButtom( + onPressed: () { + if (_formKey.currentState!.validate()) { + PhoneAuthController.instance.phoneAuthentication( + completePhoneNumber.trim(), + ); + Get.to( + () => CodeValidationScreen( + phoneNumber: completePhoneNumber.trim(), + ), + ); + } + }, + label: 'Enviar código', + ), + ), + ), + Padding( + padding: EdgeInsets.only(bottom: 27), + child: GestureDetector( + onTap: () { + Navigator.pushNamed(context, '/login'); + }, + child: Text( + 'Entrar con correo electronico', + style: TextStyle( + fontSize: 15.0, color: Color(0xFF65676B), + decoration: TextDecoration.underline, // Subrayado + ), + ), + ), + ), + RichText( + text: TextSpan( + style: TextStyle( + fontSize: 16.0, + color: Color(0xFF65676B), + fontFamily: 'Poppins', + ), + children: [ + TextSpan(text: 'No estas registrado? '), + WidgetSpan( + child: GestureDetector( + onTap: () { + Navigator.pushNamed(context, '/register'); + }, + child: Text( + 'Registrarse', + style: TextStyle( + fontSize: 16.0, + color: Color(0xFF2BA4EC), + fontWeight: FontWeight.w600, + ), + ), + ), + ), + ], + ), + ) ], ), - ) - ]), + ), + ], ), - ], + ), ), - )); + ); } } diff --git a/lib/src/screens/login_email.dart b/lib/src/screens/login_email.dart index 76d9172..d44d4c9 100644 --- a/lib/src/screens/login_email.dart +++ b/lib/src/screens/login_email.dart @@ -30,238 +30,241 @@ class _LoginEmailScreenState extends State { 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, + body: SingleChildScrollView( + reverse: true, + child: Stack( + children: [ + Container( + margin: const EdgeInsets.only(top: 130), + width: double.infinity, + height: 700, + decoration: const BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.only( + topRight: Radius.circular(50), + topLeft: Radius.circular(50))), ), - ), - Container( - padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 20), - margin: const EdgeInsets.only( - top: 125, - left: 25, + Container( + margin: const EdgeInsets.only(top: 20, left: 30), + child: const Image( + image: AssetImage('images/logo_prosapp.png'), + width: 180, + height: 100, + ), ), - child: Row( - children: [ - IconButton( - icon: Icon( - Icons.arrow_back, - size: 30, - ), - onPressed: () { - Navigator.pop(context); - }, - ), - Text( - 'Iniciar sesión', - style: TextStyle( - color: Color(0xFF262626), - fontSize: 38.0, - fontWeight: FontWeight.bold, - ), - textAlign: TextAlign.right, - ), - ], - ), - ), - Form( - key: _formKey, - child: Container( + Container( padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 20), - margin: const EdgeInsets.only(top: 210, left: 50, right: 50), - child: Column(children: [ - Padding( - padding: EdgeInsets.only(bottom: 20), - child: ElevatedButton( - onPressed: () async { - await AuthenticationRepository.instance - .signInWithGoogle(); - }, - style: ElevatedButton.styleFrom( - primary: Color(0xFF2BA4EC), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50), - ), - elevation: 0, - minimumSize: Size(230, 60), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - 'Entrar con Google ', - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.bold, - fontSize: 18, - ), - ), - SizedBox(width: 5), - FaIcon(FontAwesomeIcons.google), - ], - )), - ), - Padding( - padding: EdgeInsets.symmetric(vertical: 5), - child: Row( - children: [ - Expanded( - child: Divider( - color: Colors.black38, - thickness: 1, - ), - ), - Padding( - padding: EdgeInsets.symmetric(horizontal: 10), - child: Text("ó"), - ), - Expanded( - child: Divider( - color: Colors.black38, - thickness: 1, - ), - ), - ], - ), - ), - const Padding( - padding: EdgeInsets.only(bottom: 5), - child: Align( - alignment: Alignment.topLeft, - child: Text('Email', - style: TextStyle( - fontSize: 18.0, color: Color(0xFF65676B))), - )), - Padding( - padding: EdgeInsets.only(bottom: 20), - child: TextFormField( - controller: controller.email, - decoration: InputDecoration( - 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), - )), - hintText: 'Hello@gmail.com', - fillColor: Color.fromARGB(255, 239, 239, 239), - filled: true, - prefixIcon: Icon(Icons.email_outlined), + margin: const EdgeInsets.only( + top: 125, + left: 25, + ), + child: Row( + children: [ + IconButton( + icon: Icon( + Icons.arrow_back, + size: 30, ), + onPressed: () { + Navigator.pop(context); + }, ), - ), - Padding( - padding: EdgeInsets.only(bottom: 5), - child: Align( - alignment: Alignment.topLeft, - child: Text('Password', - style: TextStyle( - fontSize: 18.0, color: Color(0xFF65676B))), - )), - Padding( - padding: EdgeInsets.only(bottom: 50), - child: TextFormField( - controller: controller.password, - obscureText: _obscureText, - decoration: InputDecoration( - 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), - )), - hintText: 'Contraseña', - fillColor: Color.fromARGB(255, 239, 239, 239), - filled: true, - prefixIcon: Icon(Icons.lock_outline), - suffixIcon: IconButton( - icon: Icon( - _obscureText - ? Icons.visibility - : Icons.visibility_off, - color: Colors.grey, - ), - onPressed: () { - setState(() { - _obscureText = !_obscureText; - }); - }, - ), - ), - ), - ), - 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'), - ), - ), - RichText( - text: TextSpan( + Text( + 'Iniciar sesión', style: TextStyle( - fontSize: 16.0, - color: Color(0xFF65676B), - fontFamily: 'Poppins', + color: Color(0xFF262626), + fontSize: 38.0, + fontWeight: FontWeight.bold, ), - children: [ - TextSpan(text: 'No estas registrado? '), - WidgetSpan( - child: GestureDetector( - onTap: () { - Navigator.pushReplacementNamed( - context, '/register'); - }, - child: Text( - 'Registrarse', + textAlign: TextAlign.right, + ), + ], + ), + ), + Form( + key: _formKey, + child: Container( + padding: + const EdgeInsets.symmetric(horizontal: 0, vertical: 20), + margin: const EdgeInsets.only(top: 210, left: 50, right: 50), + child: Column(children: [ + Padding( + padding: EdgeInsets.only(bottom: 20), + child: ElevatedButton( + onPressed: () async { + await AuthenticationRepository.instance + .signInWithGoogle(); + }, + style: ElevatedButton.styleFrom( + primary: Color(0xFF2BA4EC), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(50), + ), + elevation: 0, + minimumSize: Size(230, 60), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'Entrar con Google ', + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 18, + ), + ), + SizedBox(width: 5), + FaIcon(FontAwesomeIcons.google), + ], + )), + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 5), + child: Row( + children: [ + Expanded( + child: Divider( + color: Colors.black38, + thickness: 1, + ), + ), + Padding( + padding: EdgeInsets.symmetric(horizontal: 10), + child: Text("ó"), + ), + Expanded( + child: Divider( + color: Colors.black38, + thickness: 1, + ), + ), + ], + ), + ), + const Padding( + padding: EdgeInsets.only(bottom: 5), + child: Align( + alignment: Alignment.topLeft, + child: Text('Email', style: TextStyle( - fontSize: 16.0, - color: Color(0xFF2BA4EC), - fontWeight: FontWeight.w600, + fontSize: 18.0, color: Color(0xFF65676B))), + )), + Padding( + padding: EdgeInsets.only(bottom: 20), + child: TextFormField( + controller: controller.email, + decoration: InputDecoration( + 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), + )), + hintText: 'Hello@gmail.com', + fillColor: Color.fromARGB(255, 239, 239, 239), + filled: true, + prefixIcon: Icon(Icons.email_outlined), + ), + ), + ), + Padding( + padding: EdgeInsets.only(bottom: 5), + child: Align( + alignment: Alignment.topLeft, + child: Text('Password', + style: TextStyle( + fontSize: 18.0, color: Color(0xFF65676B))), + )), + Padding( + padding: EdgeInsets.only(bottom: 50), + child: TextFormField( + controller: controller.password, + obscureText: _obscureText, + decoration: InputDecoration( + 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), + )), + hintText: 'Contraseña', + fillColor: Color.fromARGB(255, 239, 239, 239), + filled: true, + prefixIcon: Icon(Icons.lock_outline), + suffixIcon: IconButton( + icon: Icon( + _obscureText + ? Icons.visibility + : Icons.visibility_off, + color: Colors.grey, + ), + onPressed: () { + setState(() { + _obscureText = !_obscureText; + }); + }, + ), + ), + ), + ), + 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'), + ), + ), + RichText( + text: TextSpan( + style: TextStyle( + fontSize: 16.0, + color: Color(0xFF65676B), + fontFamily: 'Poppins', + ), + children: [ + TextSpan(text: 'No estas registrado? '), + WidgetSpan( + child: GestureDetector( + onTap: () { + Navigator.pushReplacementNamed( + context, '/register'); + }, + child: Text( + 'Registrarse', + style: TextStyle( + fontSize: 16.0, + color: Color(0xFF2BA4EC), + fontWeight: FontWeight.w600, + ), ), ), ), - ), - ], - ), - ) - ]), + ], + ), + ) + ]), + ), ), - ), - ], + ], + ), ), )); } diff --git a/lib/src/screens/professional_profile.dart b/lib/src/screens/professional_profile.dart index 8a35f25..01662e5 100644 --- a/lib/src/screens/professional_profile.dart +++ b/lib/src/screens/professional_profile.dart @@ -5,6 +5,7 @@ import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_storage/firebase_storage.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:get/get_connect/http/src/utils/utils.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/components/photo_view.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; @@ -453,198 +454,201 @@ class ProfessionalProfileScreenState extends State { final User? user = FirebaseAuth.instance.currentUser; String profession = _profession.toString(); - double _space = 10; + return SafeArea( child: Scaffold( - resizeToAvoidBottomInset: false, appBar: PopAppbar( onPressed: () { Navigator.pop(context); }, label: 'Perfil profesional'), - body: Center( - child: Column( - children: [ - GestureDetector( - onTap: () { - _showChoiceDialog(context); - }, - child: Container( - margin: const EdgeInsets.symmetric(vertical: 25), - child: (imagen_to_upload != null) - ? LocalPhoto( - file: imagen_to_upload!, - ) - : ReferencePhoto( - ref: storage.ref().child(_photo), - size: 100, - sizeCircle: 100, - ), + body: SingleChildScrollView( + reverse: true, + child: Center( + child: Column( + children: [ + GestureDetector( + onTap: () { + _showChoiceDialog(context); + }, + child: Container( + margin: const EdgeInsets.symmetric(vertical: 25), + child: (imagen_to_upload != null) + ? LocalPhoto( + file: imagen_to_upload!, + ) + : ReferencePhoto( + ref: storage.ref().child(_photo), + size: 100, + sizeCircle: 100, + ), + ), ), - ), - Container( - width: 300, - padding: const EdgeInsets.only(top: 0), - child: Form( - key: _formKey, - child: Column( - children: [ - TextFormField( - controller: _cedulaController, - decoration: InputDecoration( - prefixIcon: Icon(Icons.person_outline), - hintText: 'Cedula (Obligatorio)'), - ), - SizedBox(height: _space), - ElevatedButton( - onPressed: () { - _showChoiceDialogCedula(context); - }, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - 'Cedula', - style: TextStyle( - color: Color(0xFF2BA4EC), - fontSize: 17, + Container( + width: 300, + padding: const EdgeInsets.only(top: 0), + child: Form( + key: _formKey, + child: Column( + children: [ + TextFormField( + controller: _cedulaController, + decoration: InputDecoration( + prefixIcon: Icon(Icons.person_outline), + hintText: 'Cedula (Obligatorio)'), + ), + SizedBox(height: _space), + ElevatedButton( + onPressed: () { + _showChoiceDialogCedula(context); + }, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'Cedula', + style: TextStyle( + color: Color(0xFF2BA4EC), + fontSize: 17, + ), ), + SizedBox(width: 15), + Icon( + image_cedula != null + ? Icons.check + : Icons.file_upload_outlined, + color: Color(0xFF2BA4EC), + size: 30, + ), + ], + ), + style: ElevatedButton.styleFrom( + backgroundColor: Color(0xFFD6F4FF), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(50), ), - SizedBox(width: 15), - Icon( - image_cedula != null - ? Icons.check - : Icons.file_upload_outlined, - color: Color(0xFF2BA4EC), - size: 30, - ), - ], - ), - style: ElevatedButton.styleFrom( - backgroundColor: Color(0xFFD6F4FF), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50), + elevation: 0, + minimumSize: Size(250, 50), ), - elevation: 0, - minimumSize: Size(250, 50), ), - ), - SizedBox(height: _space), - TextFormField( - readOnly: true, - onTap: () async { - final String? profesion = (await Navigator.pushNamed( - context, '/profession')) as String?; + SizedBox(height: _space), + TextFormField( + readOnly: true, + onTap: () async { + final String? profesion = + (await Navigator.pushNamed( + context, '/profession')) as String?; - if (profesion != null) { + if (profesion != null) { + setState(() { + _profession = profesion; + }); + } + }, + decoration: InputDecoration( + prefixIcon: + const Icon(Icons.assignment_ind_rounded), + suffixIcon: const Icon(Icons.arrow_drop_down), + hintStyle: profession == '' + ? const TextStyle() + : const TextStyle(color: Colors.black87), + hintText: profession == '' + ? 'Profesión (Obligatorio)' + : profession), + ), + SizedBox(height: _space), + ElevatedButton( + onPressed: () { + _showChoiceDialogCertificado(context); + }, + style: ElevatedButton.styleFrom( + backgroundColor: const Color(0xFFD6F4FF), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(50), + ), + elevation: 0, + minimumSize: const Size(250, 50), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text( + 'Certificado profesional', + style: TextStyle( + color: Color(0xFF2BA4EC), + fontSize: 17, + ), + ), + const SizedBox(width: 15), + Icon( + image_certificado != null + ? Icons.check + : Icons.file_upload_outlined, + color: const Color(0xFF2BA4EC), + size: 30, + ), + ], + ), + ), + SizedBox(height: _space), + TextFormField( + controller: _especializacionController, + decoration: const InputDecoration( + prefixIcon: Icon(Icons.assignment_ind_rounded), + hintText: 'Especialización'), + ), + SizedBox(height: _space), + ElevatedButton( + onPressed: () async { + final images = await getImage(3); setState(() { - _profession = profesion; + images_especializacion = + images.map((e) => File(e!.path)).toList(); }); - } - }, - decoration: InputDecoration( - prefixIcon: - const Icon(Icons.assignment_ind_rounded), - suffixIcon: const Icon(Icons.arrow_drop_down), - hintStyle: profession == '' - ? const TextStyle() - : const TextStyle(color: Colors.black87), - hintText: profession == '' - ? 'Profesión (Obligatorio)' - : profession), - ), - SizedBox(height: _space), - ElevatedButton( - onPressed: () { - _showChoiceDialogCertificado(context); - }, - style: ElevatedButton.styleFrom( - backgroundColor: const Color(0xFFD6F4FF), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50), + }, + style: ElevatedButton.styleFrom( + backgroundColor: const Color(0xFFD6F4FF), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(50), + ), + elevation: 0, + minimumSize: const Size(250, 50), ), - elevation: 0, - minimumSize: const Size(250, 50), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text( - 'Certificado profesional', - style: TextStyle( - color: Color(0xFF2BA4EC), - fontSize: 17, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text( + 'Especialización', + style: TextStyle( + color: Color(0xFF2BA4EC), + fontSize: 17, + ), ), - ), - const SizedBox(width: 15), - Icon( - image_certificado != null - ? Icons.check - : Icons.file_upload_outlined, - color: const Color(0xFF2BA4EC), - size: 30, - ), - ], - ), - ), - SizedBox(height: _space), - TextFormField( - controller: _especializacionController, - decoration: const InputDecoration( - prefixIcon: Icon(Icons.assignment_ind_rounded), - hintText: 'Especialización'), - ), - SizedBox(height: _space), - ElevatedButton( - onPressed: () async { - final images = await getImage(3); - setState(() { - images_especializacion = - images.map((e) => File(e!.path)).toList(); - }); - }, - style: ElevatedButton.styleFrom( - backgroundColor: const Color(0xFFD6F4FF), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50), + const SizedBox(width: 15), + Icon( + images_especializacion.isEmpty + ? Icons.file_upload_outlined + : Icons.check, + color: const Color(0xFF2BA4EC), + size: 30, + ), + ], ), - elevation: 0, - minimumSize: const Size(250, 50), ), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text( - 'Especialización', - style: TextStyle( - color: Color(0xFF2BA4EC), - fontSize: 17, - ), - ), - const SizedBox(width: 15), - Icon( - images_especializacion.isEmpty - ? Icons.file_upload_outlined - : Icons.check, - color: const Color(0xFF2BA4EC), - size: 30, - ), - ], - ), - ), - ], - )), - ), - Container( + ], + )), + ), + Container( alignment: Alignment.bottomCenter, - margin: const EdgeInsets.only(top: 120, right: 70, left: 70), + margin: const EdgeInsets.only( + top: 80, right: 70, left: 70, bottom: 30), child: ElevatedButton( onPressed: () { sendInfo(); }, style: ElevatedButton.styleFrom( - backgroundColor: Color(0xFF2BA4EC), + backgroundColor: const Color(0xFF2BA4EC), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(50), ), @@ -670,8 +674,10 @@ class ProfessionalProfileScreenState extends State { ), ], ), - )), - ], + ), + ), + ], + ), ), ), )); diff --git a/lib/src/screens/profile.dart b/lib/src/screens/profile.dart index 7cab36b..a4021a1 100644 --- a/lib/src/screens/profile.dart +++ b/lib/src/screens/profile.dart @@ -350,7 +350,6 @@ class _ProfileScreenState extends State { return SafeArea( child: Scaffold( - resizeToAvoidBottomInset: false, appBar: AppBar( backgroundColor: Colors.white, iconTheme: const IconThemeData( @@ -369,120 +368,123 @@ class _ProfileScreenState extends State { userPhoneNumber: user?.phoneNumber ?? '', userCity: city, userState: state), - body: Center( - child: Column( - children: [ - GestureDetector( - onTap: () { - _showChoiceDialog(context); - }, - child: Container( - margin: const EdgeInsets.symmetric(vertical: 50), - child: (imagen_to_upload != null) - ? LocalPhoto( - file: imagen_to_upload!, - ) - : ReferencePhoto( - ref: storage.ref().child(_photo), - )), - ), - Container( - width: 300, - padding: const EdgeInsets.only(top: 0), - child: Form( - key: _formKey, - child: Column( - children: [ - TextFormField( - controller: _nameController, - decoration: const InputDecoration( - prefixIcon: Icon(Icons.person_outline), - hintText: 'Nombre (Obligatorio)'), - ), - const SizedBox( - height: - 20.0), // Agrega espacio vertical entre los TextFormFields - _email != null - ? TextFormField( - onTap: () { - Navigator.pushNamed( - context, '/nuevaPassword'); - }, - readOnly: true, - controller: _emailController, - decoration: const InputDecoration( - prefixIcon: Icon(Icons.email_outlined), - hintText: 'Email (Obligatorio)'), - ) - : TextFormField( - controller: _emailController, - decoration: const InputDecoration( - prefixIcon: Icon(Icons.email_outlined), - hintText: 'Email (Obligatorio)'), - ), - const SizedBox(height: 20.0), - _email != null - ? const SizedBox.shrink() - : TextFormField( - controller: _passwordController, - obscureText: _obscureText, - decoration: InputDecoration( - prefixIcon: const Icon(Icons.lock_outline), - suffixIcon: IconButton( - icon: Icon( - _obscureText - ? Icons.visibility - : Icons.visibility_off, - color: Colors.grey, + body: SingleChildScrollView( + reverse: true, + child: Center( + child: Column( + children: [ + GestureDetector( + onTap: () { + _showChoiceDialog(context); + }, + child: Container( + margin: const EdgeInsets.symmetric(vertical: 50), + child: (imagen_to_upload != null) + ? LocalPhoto( + file: imagen_to_upload!, + ) + : ReferencePhoto( + ref: storage.ref().child(_photo), + )), + ), + Container( + width: 300, + padding: const EdgeInsets.only(top: 0), + child: Form( + key: _formKey, + child: Column( + children: [ + TextFormField( + controller: _nameController, + decoration: const InputDecoration( + prefixIcon: Icon(Icons.person_outline), + hintText: 'Nombre (Obligatorio)'), + ), + const SizedBox( + height: + 20.0), // Agrega espacio vertical entre los TextFormFields + _email != null + ? TextFormField( + onTap: () { + Navigator.pushNamed( + context, '/nuevaPassword'); + }, + readOnly: true, + controller: _emailController, + decoration: const InputDecoration( + prefixIcon: Icon(Icons.email_outlined), + hintText: 'Email (Obligatorio)'), + ) + : TextFormField( + controller: _emailController, + decoration: const InputDecoration( + prefixIcon: Icon(Icons.email_outlined), + hintText: 'Email (Obligatorio)'), + ), + const SizedBox(height: 20.0), + _email != null + ? const SizedBox.shrink() + : TextFormField( + controller: _passwordController, + obscureText: _obscureText, + decoration: InputDecoration( + prefixIcon: + const Icon(Icons.lock_outline), + suffixIcon: IconButton( + icon: Icon( + _obscureText + ? Icons.visibility + : Icons.visibility_off, + color: Colors.grey, + ), + onPressed: () { + setState(() { + _obscureText = !_obscureText; + }); + }, ), - onPressed: () { - setState(() { - _obscureText = !_obscureText; - }); - }, - ), - hintText: 'Contraseña (Obligatorio)'), - ), - _email != null - ? const SizedBox.shrink() - : const SizedBox(height: 20.0), - TextFormField( - readOnly: true, - onTap: () async { - final String? ciudad = - (await Navigator.pushNamed(context, '/city')) - as String?; + hintText: 'Contraseña (Obligatorio)'), + ), + _email != null + ? const SizedBox.shrink() + : const SizedBox(height: 20.0), + TextFormField( + readOnly: true, + onTap: () async { + final String? ciudad = + (await Navigator.pushNamed(context, '/city')) + as String?; - if (ciudad != null) { - setState(() { - _ciudad = ciudad as String; - }); - } - }, - decoration: InputDecoration( - prefixIcon: Icon(Icons.near_me), - suffixIcon: Icon(Icons.arrow_drop_down), - hintStyle: city == '' - ? TextStyle() - : TextStyle(color: Colors.black87), - hintText: city == '' ? 'Ciudad' : '$city'), - ), - const SizedBox(height: 20.0), - TextFormField( - controller: _phoneNumberController, - readOnly: true, - onTap: () { - Navigator.pushNamed(context, '/newNumber'); - }, - decoration: InputDecoration( - prefixIcon: Icon(Icons.phone_android), - suffixIcon: Icon(Icons.edit_outlined), - hintText: '+57'), - ), - ], - )), - ), - Container( + if (ciudad != null) { + setState(() { + _ciudad = ciudad as String; + }); + } + }, + decoration: InputDecoration( + prefixIcon: Icon(Icons.near_me), + suffixIcon: Icon(Icons.arrow_drop_down), + hintStyle: city == '' + ? TextStyle() + : TextStyle(color: Colors.black87), + hintText: city == '' ? 'Ciudad' : '$city'), + ), + const SizedBox(height: 20.0), + TextFormField( + controller: _phoneNumberController, + readOnly: true, + onTap: () { + Navigator.pushNamed(context, '/newNumber'); + }, + decoration: InputDecoration( + prefixIcon: Icon(Icons.phone_android), + suffixIcon: Icon(Icons.edit_outlined), + hintText: '+57'), + ), + ], + )), + ), + Container( alignment: Alignment.bottomCenter, margin: EdgeInsets.only(top: 100), child: ElevatedButton( @@ -505,8 +507,11 @@ class _ProfileScreenState extends State { elevation: 0, minimumSize: Size(200, 50), ), - )), - ], + ), + padding: EdgeInsets.only(bottom: 30), + ), + ], + ), ), ), ), diff --git a/lib/src/screens/register.dart b/lib/src/screens/register.dart index 7b40be1..acb3471 100644 --- a/lib/src/screens/register.dart +++ b/lib/src/screens/register.dart @@ -26,135 +26,171 @@ class _RegisterScreenState extends State { Widget build(BuildContext context) { return SafeArea( child: Scaffold( - resizeToAvoidBottomInset: false, - backgroundColor: Color(0xFFD6F4FF), + backgroundColor: const Color(0xFFD6F4FF), body: GestureDetector( onTap: () => FocusScope.of(context).unfocus(), - child: 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, + child: SingleChildScrollView( + reverse: true, + child: Stack( + children: [ + Container( + margin: const EdgeInsets.only(top: 130), + width: double.infinity, + height: 700, + decoration: const BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.only( + topRight: Radius.circular(50), + topLeft: Radius.circular(50))), ), - ), - Container( - padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 20), - margin: const EdgeInsets.only( - top: 125, - left: 25, + Container( + margin: const EdgeInsets.only(top: 20, left: 30), + child: const Image( + image: AssetImage('images/logo_prosapp.png'), + width: 180, + height: 100, + ), ), - child: Row( - children: [ - IconButton( - icon: Icon( - Icons.arrow_back, - size: 30, - ), - onPressed: () { - Navigator.pop(context); - }, - ), - Text( - 'Registro', - style: TextStyle( - color: Color(0xFF262626), - fontSize: 38.0, - fontWeight: FontWeight.bold, - ), - textAlign: TextAlign.right, - ), - ], - ), - ), - Container( - padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 20), - margin: const EdgeInsets.only(top: 200, left: 50, right: 50), - child: Column(children: [ - Padding( - padding: EdgeInsets.only(bottom: 20), - child: ElevatedButton( - onPressed: () async { - await AuthenticationRepository.instance - .signInWithGoogle(); - }, - style: ElevatedButton.styleFrom( - primary: Color(0xFF2BA4EC), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50), - ), - elevation: 0, - minimumSize: Size(230, 60), + Container( + padding: + const EdgeInsets.symmetric(horizontal: 0, vertical: 20), + margin: const EdgeInsets.only( + top: 125, + left: 25, + ), + child: Row( + children: [ + IconButton( + icon: Icon( + Icons.arrow_back, + size: 30, ), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, + onPressed: () { + Navigator.pop(context); + }, + ), + Text( + 'Registro', + style: TextStyle( + color: Color(0xFF262626), + fontSize: 38.0, + fontWeight: FontWeight.bold, + ), + textAlign: TextAlign.right, + ), + ], + ), + ), + Container( + padding: + const EdgeInsets.symmetric(horizontal: 0, vertical: 20), + margin: const EdgeInsets.only(top: 200, left: 50, right: 50), + child: Column(children: [ + Padding( + padding: EdgeInsets.only(bottom: 20), + child: ElevatedButton( + onPressed: () async { + await AuthenticationRepository.instance + .signInWithGoogle(); + }, + style: ElevatedButton.styleFrom( + primary: Color(0xFF2BA4EC), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(50), + ), + elevation: 0, + minimumSize: Size(230, 60), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'Entrar con Google ', + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 18, + ), + ), + SizedBox(width: 5), + FaIcon(FontAwesomeIcons.google), + ], + )), + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 0), + child: Row( + children: [ + Expanded( + child: Divider( + color: Colors.black38, + thickness: 1, + ), + ), + Padding( + padding: EdgeInsets.symmetric(horizontal: 10), + child: Text("ó"), + ), + Expanded( + child: Divider( + color: Colors.black38, + thickness: 1, + ), + ), + ], + ), + ), + Form( + key: _formKey, + child: Column( children: [ - Text( - 'Entrar con Google ', - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.bold, - fontSize: 18, + const Padding( + padding: EdgeInsets.only(bottom: 5), + child: Align( + alignment: Alignment.topLeft, + child: Text('Email', + style: TextStyle( + fontSize: 18.0, + color: Color(0xFF65676B))), + )), + Padding( + padding: EdgeInsets.only(bottom: 18), + child: TextFormField( + controller: controller.email, + decoration: InputDecoration( + 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), + )), + hintText: 'Hello@gmail.com', + fillColor: Color.fromARGB(255, 239, 239, 239), + filled: true, + prefixIcon: Icon(Icons.email_outlined)), ), ), - SizedBox(width: 5), - FaIcon(FontAwesomeIcons.google), - ], - )), - ), - Padding( - padding: EdgeInsets.symmetric(vertical: 0), - child: Row( - children: [ - Expanded( - child: Divider( - color: Colors.black38, - thickness: 1, - ), - ), - Padding( - padding: EdgeInsets.symmetric(horizontal: 10), - child: Text("ó"), - ), - Expanded( - child: Divider( - color: Colors.black38, - thickness: 1, - ), - ), - ], - ), - ), - Form( - key: _formKey, - child: Column( - children: [ - const Padding( - padding: EdgeInsets.only(bottom: 5), - child: Align( - alignment: Alignment.topLeft, - child: Text('Email', - style: TextStyle( - fontSize: 18.0, - color: Color(0xFF65676B))), - )), - Padding( - padding: EdgeInsets.only(bottom: 18), - child: TextFormField( - controller: controller.email, - decoration: InputDecoration( + 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: const EdgeInsets.only(bottom: 25), + child: TextFormField( + controller: controller.password, + obscureText: _obscureText, + decoration: InputDecoration( enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: Color(0xFFECECEC)), @@ -167,107 +203,75 @@ class _RegisterScreenState extends State { borderRadius: BorderRadius.all( Radius.circular(50), )), - hintText: 'Hello@gmail.com', + hintText: 'Contraseña', 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: const EdgeInsets.only(bottom: 25), - child: TextFormField( - controller: controller.password, - obscureText: _obscureText, - decoration: InputDecoration( - 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), - )), - hintText: 'Contraseña', - fillColor: Color.fromARGB(255, 239, 239, 239), - filled: true, - prefixIcon: Icon(Icons.lock_outline), - suffixIcon: IconButton( - icon: Icon( - _obscureText - ? Icons.visibility - : Icons.visibility_off, - color: Colors.grey, + prefixIcon: Icon(Icons.lock_outline), + suffixIcon: IconButton( + icon: Icon( + _obscureText + ? Icons.visibility + : Icons.visibility_off, + color: Colors.grey, + ), + onPressed: () { + setState(() { + _obscureText = !_obscureText; + }); + }, ), - onPressed: () { - setState(() { - _obscureText = !_obscureText; - }); - }, + ), + ), + ), + ], + )), + Padding( + padding: const EdgeInsets.only(bottom: 25), + child: Center( + child: PrimaryButtom( + onPressed: () { + if (_formKey.currentState!.validate()) { + RegisterController.instance.registerUser( + controller.email.text.trim(), + controller.password.text.trim(), + ); + } + }, + label: 'Registrarme', + ), + ), + ), + RichText( + text: TextSpan( + style: TextStyle( + fontSize: 16.0, + color: Color(0xFF65676B), + fontFamily: 'Poppins', + ), + children: [ + TextSpan(text: 'Ya estas registrado? '), + WidgetSpan( + child: GestureDetector( + onTap: () { + Navigator.pushReplacementNamed(context, '/login'); + }, + child: Text( + 'Iniciar Sesión', + style: TextStyle( + fontSize: 16.0, + color: Color(0xFF2BA4EC), + fontWeight: FontWeight.w600, ), ), ), ), ], - )), - Padding( - padding: const EdgeInsets.only(bottom: 25), - child: Center( - child: PrimaryButtom( - onPressed: () { - if (_formKey.currentState!.validate()) { - RegisterController.instance.registerUser( - controller.email.text.trim(), - controller.password.text.trim(), - ); - } - }, - label: 'Registrarme', ), - ), - ), - RichText( - text: TextSpan( - style: TextStyle( - fontSize: 16.0, - color: Color(0xFF65676B), - fontFamily: 'Poppins', - ), - children: [ - TextSpan(text: 'Ya estas registrado? '), - WidgetSpan( - child: GestureDetector( - onTap: () { - Navigator.pushReplacementNamed(context, '/login'); - }, - child: Text( - 'Iniciar Sesión', - style: TextStyle( - fontSize: 16.0, - color: Color(0xFF2BA4EC), - fontWeight: FontWeight.w600, - ), - ), - ), - ), - ], - ), - ) - ]), - ), - ], + ) + ]), + ), + ], + ), ), ), ));