Primary button component

This commit is contained in:
Juan Felipe Duarte
2023-04-12 14:29:37 -05:00
parent c72f346db7
commit 30f6985711
5 changed files with 62 additions and 110 deletions
+32
View File
@@ -0,0 +1,32 @@
import 'package:flutter/material.dart';
class PrimaryButtom extends StatelessWidget {
final VoidCallback onPressed;
final String label;
const PrimaryButtom(
{super.key, required this.onPressed, required this.label});
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: onPressed,
style: ElevatedButton.styleFrom(
backgroundColor: const Color(0xFF2BA4EC),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(50),
),
elevation: 0,
minimumSize: const Size(230, 60),
),
child: Text(
label,
style: const TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 18,
),
),
);
}
}
@@ -5,7 +5,6 @@ import 'package:prosappco/src/authentication/authentication_repository.dart';
class RegisterController extends GetxController { class RegisterController extends GetxController {
static RegisterController get instance => Get.find(); static RegisterController get instance => Get.find();
final name = TextEditingController();
final email = TextEditingController(); final email = TextEditingController();
final password = TextEditingController(); final password = TextEditingController();
+15 -29
View File
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:intl_phone_field/intl_phone_field.dart'; import 'package:intl_phone_field/intl_phone_field.dart';
import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart';
import 'package:prosappco/src/components/primary_btn.dart';
import 'package:prosappco/src/controllers/phone_auth_controller.dart'; import 'package:prosappco/src/controllers/phone_auth_controller.dart';
import 'package:prosappco/src/screens/code_validation.dart'; import 'package:prosappco/src/screens/code_validation.dart';
import 'package:prosappco/src/screens/login_email.dart'; import 'package:prosappco/src/screens/login_email.dart';
@@ -122,37 +123,22 @@ class _LoginScreenState extends State<LoginScreen> {
style: TextStyle(fontSize: 13.0, color: Color(0xFF65676B))), style: TextStyle(fontSize: 13.0, color: Color(0xFF65676B))),
), ),
Padding( Padding(
padding: EdgeInsets.only(bottom: 30), padding: const EdgeInsets.only(bottom: 30),
child: Center( child: Center(
child: ElevatedButton( child: PrimaryButtom(
onPressed: () { onPressed: () {
if (_formKey.currentState!.validate()) { if (_formKey.currentState!.validate()) {
PhoneAuthController.instance.phoneAuthentication( PhoneAuthController.instance.phoneAuthentication(
completePhoneNumber.trim(), completePhoneNumber.trim(),
); );
Get.to(() => CodeValidationScreen( Get.to(() => CodeValidationScreen(
phoneNumber: completePhoneNumber.trim(), phoneNumber: completePhoneNumber.trim(),
)); ));
} }
}, },
child: Text( label: 'Enviar código',
'Enviar 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(
padding: EdgeInsets.only(bottom: 27), padding: EdgeInsets.only(bottom: 27),
+3 -24
View File
@@ -3,6 +3,7 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:prosappco/main.dart'; import 'package:prosappco/main.dart';
import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart';
import 'package:prosappco/src/components/primary_btn.dart';
import 'package:prosappco/src/controllers/login_email_controller.dart'; import 'package:prosappco/src/controllers/login_email_controller.dart';
import 'package:prosappco/src/screens/login.dart'; import 'package:prosappco/src/screens/login.dart';
import 'package:prosappco/src/screens/welcome.dart'; import 'package:prosappco/src/screens/welcome.dart';
@@ -215,30 +216,8 @@ class _LoginEmailScreenState extends State<LoginEmailScreen> {
Padding( Padding(
padding: const EdgeInsets.only(bottom: 40), padding: const EdgeInsets.only(bottom: 40),
child: Center( child: Center(
child: ElevatedButton( child: PrimaryButtom(onPressed: () {}, label: 'Iniciar'),
onPressed: () { ),
// controller.validateData(
// context,
// controller.email.text.trim(),
// controller.password.text.trim());
},
child: Text(
'Iniciar',
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(230, 60),
),
)),
), ),
RichText( RichText(
text: TextSpan( text: TextSpan(
+12 -56
View File
@@ -4,6 +4,7 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:prosappco/main.dart'; import 'package:prosappco/main.dart';
import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart';
import 'package:prosappco/src/components/primary_btn.dart';
import 'package:prosappco/src/controllers/register_controller.dart'; import 'package:prosappco/src/controllers/register_controller.dart';
import 'package:prosappco/src/screens/login.dart'; import 'package:prosappco/src/screens/login.dart';
import 'package:prosappco/src/screens/welcome.dart'; import 'package:prosappco/src/screens/welcome.dart';
@@ -138,37 +139,6 @@ class _RegisterScreenState extends State<RegisterScreen> {
key: _formKey, key: _formKey,
child: Column( child: Column(
children: [ children: [
// const Padding(
// padding: EdgeInsets.only(bottom: 5),
// child: Align(
// alignment: Alignment.topLeft,
// child: Text('Nombre',
// style: TextStyle(
// fontSize: 18.0, color: Color(0xFF65676B))),
// )),
// Padding(
// padding: EdgeInsets.only(bottom: 18),
// child: TextFormField(
// controller: controller.name,
// 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: 'Nombre y Apellido',
// fillColor: Color.fromARGB(255, 239, 239, 239),
// filled: true,
// prefixIcon: Icon(Icons.person_outline)),
// ),
// ),
const Padding( const Padding(
padding: EdgeInsets.only(bottom: 5), padding: EdgeInsets.only(bottom: 5),
child: Align( child: Align(
@@ -209,7 +179,7 @@ class _RegisterScreenState extends State<RegisterScreen> {
fontSize: 18.0, color: Color(0xFF65676B))), fontSize: 18.0, color: Color(0xFF65676B))),
)), )),
Padding( Padding(
padding: EdgeInsets.only(bottom: 25), padding: const EdgeInsets.only(bottom: 25),
child: TextFormField( child: TextFormField(
controller: controller.password, controller: controller.password,
obscureText: _obscureText, obscureText: _obscureText,
@@ -251,31 +221,17 @@ class _RegisterScreenState extends State<RegisterScreen> {
Padding( Padding(
padding: const EdgeInsets.only(bottom: 25), padding: const EdgeInsets.only(bottom: 25),
child: Center( child: Center(
child: ElevatedButton( child: PrimaryButtom(
onPressed: () { onPressed: () {
if (_formKey.currentState!.validate()) { if (_formKey.currentState!.validate()) {
RegisterController.instance.registerUser( RegisterController.instance.registerUser(
controller.email.text.trim(), controller.email.text.trim(),
controller.password.text.trim()); controller.password.text.trim());
} }
}, },
child: Text( label: 'Registrarme',
'Registrarme',
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(230, 60),
),
)),
), ),
RichText( RichText(
text: TextSpan( text: TextSpan(