diff --git a/lib/main.dart b/lib/main.dart index 253f81c..79705c0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,25 +4,25 @@ import 'package:get/get.dart'; import 'package:intl/date_symbol_data_local.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/providers/user_provider.dart'; -import 'package:prosappco/src/screens/calendar.dart'; -import 'package:prosappco/src/screens/city.dart'; -import 'package:prosappco/src/screens/login/login.dart'; +import 'package:prosappco/src/presentation/screens/calendar.dart'; +import 'package:prosappco/src/presentation/screens/city.dart'; +import 'package:prosappco/src/presentation/screens/login/login.dart'; import 'package:firebase_core/firebase_core.dart'; -import 'package:prosappco/src/screens/login/login_email.dart'; -import 'package:prosappco/src/screens/my_services.dart'; -import 'package:prosappco/src/screens/my_services_pro.dart'; -import 'package:prosappco/src/screens/new_number.dart'; -import 'package:prosappco/src/screens/new_password.dart'; -import 'package:prosappco/src/screens/profession.dart'; -import 'package:prosappco/src/screens/professional_profile.dart'; -import 'package:prosappco/src/screens/professional_revision.dart'; -import 'package:prosappco/src/screens/profile.dart'; -import 'package:prosappco/src/screens/profile_pro.dart'; -import 'package:prosappco/src/screens/register/register.dart'; -import 'package:prosappco/src/screens/request_sent.dart'; -import 'package:prosappco/src/screens/reset_password/reset_password.dart'; -import 'package:prosappco/src/screens/service.dart'; -import 'package:prosappco/src/screens/solicitudes.dart'; +import 'package:prosappco/src/presentation/screens/login/login_email.dart'; +import 'package:prosappco/src/presentation/screens/my_services.dart'; +import 'package:prosappco/src/presentation/screens/my_services_pro.dart'; +import 'package:prosappco/src/presentation/screens/new_number.dart'; +import 'package:prosappco/src/presentation/screens/new_password.dart'; +import 'package:prosappco/src/presentation/screens/profession.dart'; +import 'package:prosappco/src/presentation/screens/professional_profile.dart'; +import 'package:prosappco/src/presentation/screens/professional_revision.dart'; +import 'package:prosappco/src/presentation/screens/profile/profile.dart'; +import 'package:prosappco/src/presentation/screens/profile/profile_pro.dart'; +import 'package:prosappco/src/presentation/screens/register/register.dart'; +import 'package:prosappco/src/presentation/screens/request_sent.dart'; +import 'package:prosappco/src/presentation/screens/reset_password/reset_password.dart'; +import 'package:prosappco/src/presentation/screens/service.dart'; +import 'package:prosappco/src/presentation/screens/solicitudes.dart'; import 'package:prosappco/src/services/local_notifications.dart'; import 'firebase_options.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; diff --git a/lib/src/authentication/authentication_repository.dart b/lib/src/authentication/authentication_repository.dart index 5b4cb77..e449174 100644 --- a/lib/src/authentication/authentication_repository.dart +++ b/lib/src/authentication/authentication_repository.dart @@ -3,8 +3,8 @@ import 'package:firebase_auth/firebase_auth.dart'; import 'package:get/get.dart'; import 'package:google_sign_in/google_sign_in.dart'; import 'package:prosappco/src/authentication/exceptions/register_failed.dart'; -import 'package:prosappco/src/screens/login/login.dart'; -import 'package:prosappco/src/screens/service.dart'; +import 'package:prosappco/src/presentation/screens/login/login.dart'; +import 'package:prosappco/src/presentation/screens/service.dart'; class AuthenticationRepository extends GetxController { static AuthenticationRepository get instance => Get.find(); diff --git a/lib/src/components/drawer_professional.dart b/lib/src/components/drawer_professional.dart index 469b4ef..4f8b5ad 100644 --- a/lib/src/components/drawer_professional.dart +++ b/lib/src/components/drawer_professional.dart @@ -6,18 +6,18 @@ import 'package:flutter_rating_bar/flutter_rating_bar.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/components/photo_view.dart'; import 'package:prosappco/src/models/user_model.dart'; -import 'package:prosappco/src/screens/calendar.dart'; -import 'package:prosappco/src/screens/messages.dart'; -import 'package:prosappco/src/screens/my_services_pro.dart'; -import 'package:prosappco/src/screens/professional.dart'; -import 'package:prosappco/src/screens/profile.dart'; -import 'package:prosappco/src/screens/profile_pro.dart'; -import 'package:prosappco/src/screens/profile_pro_web.dart'; -import 'package:prosappco/src/screens/reputacion_pro.dart'; -import 'package:prosappco/src/screens/web_view.dart'; +import 'package:prosappco/src/presentation/screens/calendar.dart'; +import 'package:prosappco/src/presentation/screens/messages.dart'; +import 'package:prosappco/src/presentation/screens/my_services_pro.dart'; +import 'package:prosappco/src/presentation/screens/professional.dart'; +import 'package:prosappco/src/presentation/screens/profile/profile.dart'; +import 'package:prosappco/src/presentation/screens/profile/profile_pro.dart'; +import 'package:prosappco/src/presentation/screens/profile/profile_pro_web.dart'; +import 'package:prosappco/src/presentation/screens/reputacion_pro.dart'; +import 'package:prosappco/src/presentation/screens/web_view.dart'; import '../models/scores_model.dart'; -import '../screens/configuracion.dart'; -import '../screens/support.dart'; +import '../presentation/screens/configuracion.dart'; +import '../presentation/screens/support.dart'; import 'package:url_launcher/url_launcher.dart'; class DrawerProfessional extends StatefulWidget { diff --git a/lib/src/controllers/otp_controller.dart b/lib/src/controllers/otp_controller.dart index 0782a98..3b894da 100644 --- a/lib/src/controllers/otp_controller.dart +++ b/lib/src/controllers/otp_controller.dart @@ -1,6 +1,6 @@ import 'package:get/get.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart'; -import 'package:prosappco/src/screens/service.dart'; +import 'package:prosappco/src/presentation/screens/service.dart'; class OTPController extends GetxController { static OTPController get instance => Get.find(); diff --git a/lib/src/models/user_model.dart b/lib/src/models/user_model.dart index b7b5d31..495f5de 100644 --- a/lib/src/models/user_model.dart +++ b/lib/src/models/user_model.dart @@ -1,6 +1,6 @@ import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_storage/firebase_storage.dart'; -import 'package:prosappco/src/screens/professional.dart'; +import 'package:prosappco/src/presentation/screens/professional.dart'; class UserModel { final String name; diff --git a/lib/src/screens/about.dart b/lib/src/presentation/screens/about.dart similarity index 97% rename from lib/src/screens/about.dart rename to lib/src/presentation/screens/about.dart index 8e39f18..4bf1e71 100644 --- a/lib/src/screens/about.dart +++ b/lib/src/presentation/screens/about.dart @@ -3,7 +3,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/models/setting_model.dart'; -import 'package:prosappco/src/screens/web_view.dart'; +import 'package:prosappco/src/presentation/screens/web_view.dart'; import 'package:url_launcher/url_launcher.dart'; class AboutScreen extends StatefulWidget { diff --git a/lib/src/screens/calendar.dart b/lib/src/presentation/screens/calendar.dart similarity index 99% rename from lib/src/screens/calendar.dart rename to lib/src/presentation/screens/calendar.dart index 01b387c..7a97e64 100644 --- a/lib/src/screens/calendar.dart +++ b/lib/src/presentation/screens/calendar.dart @@ -6,7 +6,7 @@ import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/components/primary_btn.dart'; import 'package:prosappco/src/models/event_model.dart'; -import 'package:prosappco/src/screens/cita.dart'; +import 'package:prosappco/src/presentation/screens/cita.dart'; import 'package:table_calendar/table_calendar.dart'; import 'package:intl/intl.dart'; diff --git a/lib/src/screens/chat.dart b/lib/src/presentation/screens/chat.dart similarity index 99% rename from lib/src/screens/chat.dart rename to lib/src/presentation/screens/chat.dart index 358fcab..e246f64 100644 --- a/lib/src/screens/chat.dart +++ b/lib/src/presentation/screens/chat.dart @@ -10,8 +10,8 @@ import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/models/chat_model.dart'; import 'package:prosappco/src/models/event_model.dart'; import 'package:prosappco/src/models/user_model.dart'; -import 'package:prosappco/src/screens/professional.dart'; -import 'package:prosappco/src/screens/professional_info.dart'; +import 'package:prosappco/src/presentation/screens/professional.dart'; +import 'package:prosappco/src/presentation/screens/professional_info.dart'; import 'package:http/http.dart' as http; class ChatScreen extends StatefulWidget { diff --git a/lib/src/screens/cita.dart b/lib/src/presentation/screens/cita.dart similarity index 99% rename from lib/src/screens/cita.dart rename to lib/src/presentation/screens/cita.dart index cd6a239..de60a8b 100644 --- a/lib/src/screens/cita.dart +++ b/lib/src/presentation/screens/cita.dart @@ -13,8 +13,8 @@ import 'package:prosappco/src/models/event_model.dart'; import 'package:prosappco/src/models/scores_model.dart'; import 'package:prosappco/src/models/setting_model.dart'; import 'package:prosappco/src/models/user_model.dart'; -import 'package:prosappco/src/screens/chat.dart'; -import 'package:prosappco/src/screens/score.dart'; +import 'package:prosappco/src/presentation/screens/chat.dart'; +import 'package:prosappco/src/presentation/screens/score.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:community_material_icon/community_material_icon.dart'; import 'package:http/http.dart' as http; diff --git a/lib/src/screens/city.dart b/lib/src/presentation/screens/city.dart similarity index 100% rename from lib/src/screens/city.dart rename to lib/src/presentation/screens/city.dart diff --git a/lib/src/screens/code_validation.dart b/lib/src/presentation/screens/code_validation.dart similarity index 100% rename from lib/src/screens/code_validation.dart rename to lib/src/presentation/screens/code_validation.dart diff --git a/lib/src/screens/configuracion.dart b/lib/src/presentation/screens/configuracion.dart similarity index 98% rename from lib/src/screens/configuracion.dart rename to lib/src/presentation/screens/configuracion.dart index 7dd08d0..00613fb 100644 --- a/lib/src/screens/configuracion.dart +++ b/lib/src/presentation/screens/configuracion.dart @@ -4,7 +4,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; -import 'package:prosappco/src/screens/about.dart'; +import 'package:prosappco/src/presentation/screens/about.dart'; class ConfiguracionScreen extends StatefulWidget { const ConfiguracionScreen({super.key}); diff --git a/lib/src/screens/horario.dart b/lib/src/presentation/screens/horario.dart similarity index 98% rename from lib/src/screens/horario.dart rename to lib/src/presentation/screens/horario.dart index 1fa7474..91e2d59 100644 --- a/lib/src/screens/horario.dart +++ b/lib/src/presentation/screens/horario.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/components/primary_btn.dart'; -import '../components/schedule_picker.dart'; +import '../../components/schedule_picker.dart'; class HorarioScreen extends StatelessWidget { Map horarios; diff --git a/lib/src/screens/login/login.dart b/lib/src/presentation/screens/login/login.dart similarity index 99% rename from lib/src/screens/login/login.dart rename to lib/src/presentation/screens/login/login.dart index 6f4f700..382f713 100644 --- a/lib/src/screens/login/login.dart +++ b/lib/src/presentation/screens/login/login.dart @@ -9,8 +9,8 @@ import 'package:prosappco/src/components/primary_btn.dart'; import 'package:prosappco/src/controllers/phone_auth_controller.dart'; import 'package:prosappco/src/models/setting_model.dart'; import 'package:prosappco/src/providers/user_provider.dart'; -import 'package:prosappco/src/screens/code_validation.dart'; -import 'package:prosappco/src/screens/web_view.dart'; +import 'package:prosappco/src/presentation/screens/code_validation.dart'; +import 'package:prosappco/src/presentation/screens/web_view.dart'; import 'package:provider/provider.dart'; import 'package:responsive_builder/responsive_builder.dart'; import 'package:url_launcher/url_launcher.dart'; diff --git a/lib/src/screens/login/login_email.dart b/lib/src/presentation/screens/login/login_email.dart similarity index 100% rename from lib/src/screens/login/login_email.dart rename to lib/src/presentation/screens/login/login_email.dart diff --git a/lib/src/screens/messages.dart b/lib/src/presentation/screens/messages.dart similarity index 98% rename from lib/src/screens/messages.dart rename to lib/src/presentation/screens/messages.dart index e4fea93..0cd2626 100644 --- a/lib/src/screens/messages.dart +++ b/lib/src/presentation/screens/messages.dart @@ -6,7 +6,7 @@ import 'package:prosappco/src/components/photo_view.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/models/chat_model.dart'; import 'package:prosappco/src/models/event_model.dart'; -import 'package:prosappco/src/screens/chat.dart'; +import 'package:prosappco/src/presentation/screens/chat.dart'; class MessagesScreen extends StatefulWidget { const MessagesScreen({super.key}); diff --git a/lib/src/screens/messages_user.dart b/lib/src/presentation/screens/messages_user.dart similarity index 98% rename from lib/src/screens/messages_user.dart rename to lib/src/presentation/screens/messages_user.dart index e8cbc23..30f5b61 100644 --- a/lib/src/screens/messages_user.dart +++ b/lib/src/presentation/screens/messages_user.dart @@ -7,7 +7,7 @@ import 'package:prosappco/src/components/photo_view.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/models/chat_model.dart'; import 'package:prosappco/src/models/event_model.dart'; -import 'package:prosappco/src/screens/chat.dart'; +import 'package:prosappco/src/presentation/screens/chat.dart'; class MessagesUserScreen extends StatefulWidget { const MessagesUserScreen({super.key}); diff --git a/lib/src/screens/my_services.dart b/lib/src/presentation/screens/my_services.dart similarity index 99% rename from lib/src/screens/my_services.dart rename to lib/src/presentation/screens/my_services.dart index 47e7256..6223396 100644 --- a/lib/src/screens/my_services.dart +++ b/lib/src/presentation/screens/my_services.dart @@ -8,7 +8,7 @@ import 'package:prosappco/src/components/drawer_professional.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/models/event_model.dart'; import 'package:prosappco/src/models/scores_model.dart'; -import 'package:prosappco/src/screens/cita.dart'; +import 'package:prosappco/src/presentation/screens/cita.dart'; class MyServicesScreen extends StatelessWidget { MyServicesScreen({super.key}); diff --git a/lib/src/screens/my_services_pro.dart b/lib/src/presentation/screens/my_services_pro.dart similarity index 99% rename from lib/src/screens/my_services_pro.dart rename to lib/src/presentation/screens/my_services_pro.dart index a8094f1..72006e8 100644 --- a/lib/src/screens/my_services_pro.dart +++ b/lib/src/presentation/screens/my_services_pro.dart @@ -8,7 +8,7 @@ import 'package:prosappco/src/components/drawer_professional.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/models/event_model.dart'; import 'package:prosappco/src/models/scores_model.dart'; -import 'package:prosappco/src/screens/cita.dart'; +import 'package:prosappco/src/presentation/screens/cita.dart'; class MyServicesProScreen extends StatelessWidget { MyServicesProScreen({super.key}); diff --git a/lib/src/screens/new_number.dart b/lib/src/presentation/screens/new_number.dart similarity index 100% rename from lib/src/screens/new_number.dart rename to lib/src/presentation/screens/new_number.dart diff --git a/lib/src/screens/new_number_validation.dart b/lib/src/presentation/screens/new_number_validation.dart similarity index 99% rename from lib/src/screens/new_number_validation.dart rename to lib/src/presentation/screens/new_number_validation.dart index 1332a71..9ba0a55 100644 --- a/lib/src/screens/new_number_validation.dart +++ b/lib/src/presentation/screens/new_number_validation.dart @@ -11,7 +11,7 @@ class NewNumberValidationScreen extends StatefulWidget { } class _NewNumberValidationScreenState extends State { - var otp; + dynamic otp; @override Widget build(BuildContext context) { return SafeArea( diff --git a/lib/src/screens/new_password.dart b/lib/src/presentation/screens/new_password.dart similarity index 100% rename from lib/src/screens/new_password.dart rename to lib/src/presentation/screens/new_password.dart diff --git a/lib/src/screens/profession.dart b/lib/src/presentation/screens/profession.dart similarity index 99% rename from lib/src/screens/profession.dart rename to lib/src/presentation/screens/profession.dart index 24b2f70..0bdd330 100644 --- a/lib/src/screens/profession.dart +++ b/lib/src/presentation/screens/profession.dart @@ -4,7 +4,7 @@ import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/material.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; -import 'package:prosappco/src/screens/support.dart'; +import 'package:prosappco/src/presentation/screens/support.dart'; final CollectionReference professionsCollection = FirebaseFirestore.instance.collection('professions'); diff --git a/lib/src/screens/professional.dart b/lib/src/presentation/screens/professional.dart similarity index 99% rename from lib/src/screens/professional.dart rename to lib/src/presentation/screens/professional.dart index 3a9d864..c4a3d48 100644 --- a/lib/src/screens/professional.dart +++ b/lib/src/presentation/screens/professional.dart @@ -9,8 +9,8 @@ import 'package:prosappco/src/components/photo_view.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/models/setting_model.dart'; import 'package:prosappco/src/models/user_model.dart'; -import 'package:prosappco/src/screens/professional_info.dart'; -import '../models/scores_model.dart'; +import 'package:prosappco/src/presentation/screens/professional_info.dart'; +import '../../models/scores_model.dart'; class ProfessionalScreen extends StatefulWidget { final String profession; diff --git a/lib/src/screens/professional_direccion.dart b/lib/src/presentation/screens/professional_direccion.dart similarity index 100% rename from lib/src/screens/professional_direccion.dart rename to lib/src/presentation/screens/professional_direccion.dart diff --git a/lib/src/screens/professional_info.dart b/lib/src/presentation/screens/professional_info.dart similarity index 98% rename from lib/src/screens/professional_info.dart rename to lib/src/presentation/screens/professional_info.dart index dd763cd..8dc8fe7 100644 --- a/lib/src/screens/professional_info.dart +++ b/lib/src/presentation/screens/professional_info.dart @@ -5,10 +5,10 @@ import 'package:intl/intl.dart'; import 'package:prosappco/src/components/photo_view.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/models/setting_model.dart'; -import 'package:prosappco/src/screens/professional.dart'; -import 'package:prosappco/src/screens/reputation.dart'; +import 'package:prosappco/src/presentation/screens/professional.dart'; +import 'package:prosappco/src/presentation/screens/reputation.dart'; -import '../models/scores_model.dart'; +import '../../models/scores_model.dart'; class ProfessionalInfoScreen extends StatefulWidget { Professional professional; diff --git a/lib/src/screens/professional_profile.dart b/lib/src/presentation/screens/professional_profile.dart similarity index 100% rename from lib/src/screens/professional_profile.dart rename to lib/src/presentation/screens/professional_profile.dart diff --git a/lib/src/screens/professional_profile_web.dart b/lib/src/presentation/screens/professional_profile_web.dart similarity index 100% rename from lib/src/screens/professional_profile_web.dart rename to lib/src/presentation/screens/professional_profile_web.dart diff --git a/lib/src/screens/professional_revision.dart b/lib/src/presentation/screens/professional_revision.dart similarity index 100% rename from lib/src/screens/professional_revision.dart rename to lib/src/presentation/screens/professional_revision.dart diff --git a/lib/src/screens/profile.dart b/lib/src/presentation/screens/profile/profile.dart similarity index 66% rename from lib/src/screens/profile.dart rename to lib/src/presentation/screens/profile/profile.dart index dc5285c..46ba827 100644 --- a/lib/src/screens/profile.dart +++ b/lib/src/presentation/screens/profile/profile.dart @@ -9,13 +9,14 @@ import 'package:intl/intl.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/controllers/add_name_email_city.dart'; -import 'package:prosappco/src/providers/user_provider.dart'; -import 'package:prosappco/src/screens/city.dart'; -import 'package:prosappco/src/screens/new_number.dart'; -import 'package:prosappco/src/screens/new_password.dart'; +import 'package:prosappco/src/presentation/widgets/profile/birth_date_picker.dart'; +import 'package:prosappco/src/presentation/screens/city.dart'; +import 'package:prosappco/src/presentation/screens/new_number.dart'; +import 'package:prosappco/src/presentation/screens/new_password.dart'; import 'package:prosappco/src/services/select_image_profile.dart'; -import 'package:provider/provider.dart'; -import '../components/photo_view.dart'; +import 'package:prosappco/src/presentation/widgets/profile/gender_dropdown.dart'; +import 'package:prosappco/src/presentation/widgets/shared/primary_button.dart'; +import '../../../components/photo_view.dart'; class ProfileScreen extends StatefulWidget { const ProfileScreen({Key? key}) : super(key: key); @@ -26,7 +27,7 @@ class ProfileScreen extends StatefulWidget { class _ProfileScreenState extends State { File? imagen_to_upload; - + final DateFormat formatter = DateFormat('dd/MM/yyyy'); final uid = AuthenticationRepository.instance.getCurrentUserUid(); bool _obscureText = true; final _formKey = GlobalKey(); @@ -41,6 +42,8 @@ class _ProfileScreenState extends State { var _ciudad = '...'; var _photo = '...'; String? _email = ''; + String gender = ''; + DateTime? birthDate; @override void initState() { @@ -484,7 +487,6 @@ class _ProfileScreenState extends State { @override Widget build(BuildContext context) { - // final userProvider = Provider.of(context); String city = _ciudad.toString(); return Scaffold( @@ -503,7 +505,7 @@ class _ProfileScreenState extends State { _showChoiceDialog(context); }, child: Container( - margin: const EdgeInsets.symmetric(vertical: 50), + margin: const EdgeInsets.symmetric(vertical: 20), child: (imagen_to_upload != null) ? LocalPhoto(file: imagen_to_upload!) : ReferencePhoto(ref: storage.ref().child(_photo))), @@ -512,135 +514,159 @@ class _ProfileScreenState extends State { width: 300, padding: const EdgeInsets.only(top: 0), child: Form( - key: _formKey, - child: Column( - children: [ - TextFormField( - controller: _nameController, - maxLength: 50, - validator: (value) { - if (value == null || value.isEmpty) { - return 'Porfavor ingrese un nombre.'; - } - if (value.length < 5) { - return 'Debe tener al menos 5 caracteres.'; - } - return null; - }, - decoration: const InputDecoration( - prefixIcon: Icon(Icons.person_outline), - hintText: 'Nombre (Obligatorio)'), - ), - const SizedBox(height: 0), - _email != null - ? TextFormField( - onTap: () { - _showEmailUpdateDialog(context); - }, - readOnly: true, - controller: _emailController, - decoration: const InputDecoration( - prefixIcon: Icon(Icons.email_outlined), - hintText: 'Email (Obligatorio)'), - ) - : TextFormField( - controller: _emailController, - 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( - prefixIcon: Icon(Icons.email_outlined), - hintText: 'Email (Obligatorio)'), - ), - const SizedBox(height: 20.0), - _email != null - ? const SizedBox.shrink() - : TextFormField( - controller: _passwordController, - obscureText: _obscureText, - validator: (value) { - if (value == null || value.isEmpty) { - return 'Porfavor ingrese una contraseña.'; - } - if (value.length < 5) { - return 'Debe tener al menos 5 caracteres.'; - } - return null; - }, - 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; - }); - }, + key: _formKey, + child: Column( + children: [ + TextFormField( + controller: _nameController, + maxLength: 50, + validator: (value) { + if (value == null || value.isEmpty) { + return 'Porfavor ingrese un nombre.'; + } + if (value.length < 5) { + return 'Debe tener al menos 5 caracteres.'; + } + return null; + }, + decoration: const InputDecoration( + prefixIcon: Icon(Icons.person_outline), + hintText: 'Nombre (Obligatorio)'), + ), + const SizedBox(height: 0), + _email != null + ? TextFormField( + onTap: () { + _showEmailUpdateDialog(context); + }, + readOnly: true, + controller: _emailController, + decoration: const InputDecoration( + prefixIcon: Icon(Icons.email_outlined), + hintText: 'Email (Obligatorio)'), + ) + : TextFormField( + controller: _emailController, + 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( + prefixIcon: Icon(Icons.email_outlined), + hintText: 'Email (Obligatorio)'), + ), + const SizedBox(height: 20.0), + _email != null + ? const SizedBox.shrink() + : TextFormField( + controller: _passwordController, + obscureText: _obscureText, + validator: (value) { + if (value == null || value.isEmpty) { + return 'Porfavor ingrese una contraseña.'; + } + if (value.length < 5) { + return 'Debe tener al menos 5 caracteres.'; + } + return null; + }, + decoration: InputDecoration( + prefixIcon: const Icon(Icons.lock_outline), + suffixIcon: IconButton( + icon: Icon( + _obscureText + ? Icons.visibility + : Icons.visibility_off, + color: Colors.grey, ), - hintText: 'Contraseña (Obligatorio)'), - ), - _email != null - ? const SizedBox.shrink() - : const SizedBox(height: 20.0), - TextFormField( - readOnly: true, - onTap: () async { - final String? ciudad = await Navigator.push( - context, - CupertinoPageRoute( - builder: (BuildContext context) { - return const CityScreen(); - }, - ), - ) as String?; + 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.push( + context, + CupertinoPageRoute( + builder: (BuildContext context) { + return const CityScreen(); + }, + ), + ) as String?; - if (ciudad != null) { - setState(() { - _ciudad = ciudad; - }); - } - }, - decoration: InputDecoration( - prefixIcon: const Icon(Icons.near_me), - suffixIcon: const Icon(Icons.arrow_drop_down), - hintStyle: city == '' - ? const TextStyle() - : const TextStyle(color: Colors.black87), - hintText: city == '' ? 'Ciudad' : city), + if (ciudad != null) { + setState(() { + _ciudad = ciudad; + }); + } + }, + decoration: InputDecoration( + prefixIcon: const Icon(Icons.near_me), + suffixIcon: const Icon(Icons.arrow_drop_down), + hintStyle: city == '' + ? const TextStyle() + : const TextStyle(color: Colors.black87), + hintText: city == '' ? 'Ciudad' : city, ), - const SizedBox(height: 20.0), - TextFormField( - controller: _phoneNumberController, - readOnly: true, - onTap: () { - Navigator.of(context).push( - CupertinoPageRoute( - builder: (BuildContext context) { - return const NewNumberScreen(); - }, - ), - ); - }, - decoration: const InputDecoration( - prefixIcon: Icon(Icons.phone_android), - suffixIcon: Icon(Icons.edit_outlined), - hintText: '+57'), + ), + const SizedBox(height: 20.0), + TextFormField( + controller: _phoneNumberController, + readOnly: true, + onTap: () { + Navigator.of(context).push( + CupertinoPageRoute( + builder: (BuildContext context) { + return const NewNumberScreen(); + }, + ), + ); + }, + decoration: const InputDecoration( + prefixIcon: Icon(Icons.phone_android), + suffixIcon: Icon(Icons.edit_outlined), + hintText: '+57', ), - ], - )), + ), + const SizedBox(height: 20.0), + GenderDropdown( + onChanged: (selectedGender) { + setState(() { + gender = selectedGender; + }); + }, + ), + const SizedBox(height: 20.0), + BirthDatePicker( + onDateSelected: (birthDay) { + setState(() { + birthDate = birthDay; + }); + }, + controller: TextEditingController( + text: birthDate == null + ? '' + : formatter.format(birthDate!), + ), + ), + ], + ), + ), ), Container( alignment: Alignment.bottomCenter, @@ -649,7 +675,7 @@ class _ProfileScreenState extends State { child: Column( children: [ _email != null - ? ElevatedButton( + ? PrimaryButton( onPressed: () { Navigator.push( context, @@ -660,47 +686,19 @@ class _ProfileScreenState extends State { ), ); }, - style: ElevatedButton.styleFrom( - backgroundColor: const Color(0xFF2BA4EC), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50), - ), - elevation: 0, - minimumSize: const Size(300, 45), - ), - child: const Text( - 'Cambiar Contraseña', - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.bold, - fontSize: 17, - ), - ), + text: 'Cambiar Contraseña', + minWidth: 300, + minHeight: 45, ) : const SizedBox(height: 20), const SizedBox(height: 60), - ElevatedButton( + PrimaryButton( onPressed: () async { if (_formKey.currentState!.validate()) { await updateInfo(); } }, - style: ElevatedButton.styleFrom( - backgroundColor: const Color(0xFF2BA4EC), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50), - ), - elevation: 0, - minimumSize: const Size(200, 50), - ), - child: const Text( - 'Guardar', - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.bold, - fontSize: 17, - ), - ), + text: 'Guardar', ), ], ), diff --git a/lib/src/screens/profile_pro.dart b/lib/src/presentation/screens/profile/profile_pro.dart similarity index 99% rename from lib/src/screens/profile_pro.dart rename to lib/src/presentation/screens/profile/profile_pro.dart index 15ad158..58b44e3 100644 --- a/lib/src/screens/profile_pro.dart +++ b/lib/src/presentation/screens/profile/profile_pro.dart @@ -12,9 +12,9 @@ import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/components/primary_btn.dart'; import 'package:prosappco/src/components/schedule_picker.dart'; import 'package:prosappco/src/models/setting_model.dart'; -import 'package:prosappco/src/screens/horario.dart'; -import 'package:prosappco/src/screens/professional.dart'; -import 'package:prosappco/src/screens/professional_direccion.dart'; +import 'package:prosappco/src/presentation/screens/horario.dart'; +import 'package:prosappco/src/presentation/screens/professional.dart'; +import 'package:prosappco/src/presentation/screens/professional_direccion.dart'; import 'package:prosappco/src/services/select_image_profile.dart'; class ProfileProScreen extends StatefulWidget { diff --git a/lib/src/screens/profile_pro_web.dart b/lib/src/presentation/screens/profile/profile_pro_web.dart similarity index 99% rename from lib/src/screens/profile_pro_web.dart rename to lib/src/presentation/screens/profile/profile_pro_web.dart index 9f2356d..d99be48 100644 --- a/lib/src/screens/profile_pro_web.dart +++ b/lib/src/presentation/screens/profile/profile_pro_web.dart @@ -11,9 +11,9 @@ import 'package:prosappco/src/components/pop_appbar.dart'; import 'package:prosappco/src/components/primary_btn.dart'; import 'package:prosappco/src/components/schedule_picker.dart'; import 'package:prosappco/src/models/setting_model.dart'; -import 'package:prosappco/src/screens/horario.dart'; -import 'package:prosappco/src/screens/professional.dart'; -import 'package:prosappco/src/screens/ubicacion.dart'; +import 'package:prosappco/src/presentation/screens/horario.dart'; +import 'package:prosappco/src/presentation/screens/professional.dart'; +import 'package:prosappco/src/presentation/screens/ubicacion.dart'; class ProfileProWebScreen extends StatefulWidget { const ProfileProWebScreen({super.key}); diff --git a/lib/src/screens/profile_web.dart b/lib/src/presentation/screens/profile/profile_web.dart similarity index 99% rename from lib/src/screens/profile_web.dart rename to lib/src/presentation/screens/profile/profile_web.dart index 95a128d..a2b0f8e 100644 --- a/lib/src/screens/profile_web.dart +++ b/lib/src/presentation/screens/profile/profile_web.dart @@ -11,9 +11,9 @@ import 'package:image_picker/image_picker.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/components/photo_view_web.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; -import 'package:prosappco/src/screens/city.dart'; -import 'package:prosappco/src/screens/new_number.dart'; -import 'package:prosappco/src/screens/new_password.dart'; +import 'package:prosappco/src/presentation/screens/city.dart'; +import 'package:prosappco/src/presentation/screens/new_number.dart'; +import 'package:prosappco/src/presentation/screens/new_password.dart'; import 'package:universal_html/html.dart' as html; class ProfileWebScreen extends StatefulWidget { diff --git a/lib/src/screens/register/register.dart b/lib/src/presentation/screens/register/register.dart similarity index 99% rename from lib/src/screens/register/register.dart rename to lib/src/presentation/screens/register/register.dart index a7eed67..a931f5e 100644 --- a/lib/src/screens/register/register.dart +++ b/lib/src/presentation/screens/register/register.dart @@ -10,8 +10,8 @@ import 'package:prosappco/src/components/primary_btn.dart'; import 'package:prosappco/src/controllers/register_controller.dart'; import 'package:prosappco/src/models/setting_model.dart'; import 'package:prosappco/src/providers/user_provider.dart'; -import 'package:prosappco/src/screens/login/login.dart'; -import 'package:prosappco/src/screens/web_view.dart'; +import 'package:prosappco/src/presentation/screens/login/login.dart'; +import 'package:prosappco/src/presentation/screens/web_view.dart'; import 'package:provider/provider.dart'; import 'package:responsive_builder/responsive_builder.dart'; import 'package:url_launcher/url_launcher.dart'; diff --git a/lib/src/screens/reputacion_pro.dart b/lib/src/presentation/screens/reputacion_pro.dart similarity index 100% rename from lib/src/screens/reputacion_pro.dart rename to lib/src/presentation/screens/reputacion_pro.dart diff --git a/lib/src/screens/reputation.dart b/lib/src/presentation/screens/reputation.dart similarity index 100% rename from lib/src/screens/reputation.dart rename to lib/src/presentation/screens/reputation.dart diff --git a/lib/src/screens/request_sent.dart b/lib/src/presentation/screens/request_sent.dart similarity index 100% rename from lib/src/screens/request_sent.dart rename to lib/src/presentation/screens/request_sent.dart diff --git a/lib/src/screens/reset_password/reset_password.dart b/lib/src/presentation/screens/reset_password/reset_password.dart similarity index 100% rename from lib/src/screens/reset_password/reset_password.dart rename to lib/src/presentation/screens/reset_password/reset_password.dart diff --git a/lib/src/screens/score.dart b/lib/src/presentation/screens/score.dart similarity index 100% rename from lib/src/screens/score.dart rename to lib/src/presentation/screens/score.dart diff --git a/lib/src/screens/service.dart b/lib/src/presentation/screens/service.dart similarity index 98% rename from lib/src/screens/service.dart rename to lib/src/presentation/screens/service.dart index a0b3a0f..f88ce80 100644 --- a/lib/src/screens/service.dart +++ b/lib/src/presentation/screens/service.dart @@ -12,17 +12,17 @@ import 'package:get/get.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:flutter_polyline_points/flutter_polyline_points.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart'; -import 'package:prosappco/src/components/drawer_menu.dart'; +import 'package:prosappco/src/presentation/widgets/shared/drawer_menu.dart'; import 'package:prosappco/src/models/event_model.dart'; import 'package:prosappco/src/models/setting_model.dart'; import 'package:prosappco/src/models/user_model.dart'; -import 'package:prosappco/src/screens/professional.dart'; +import 'package:prosappco/src/presentation/screens/professional.dart'; import 'package:intl/intl.dart'; -import 'package:prosappco/src/screens/profile.dart'; -import 'package:prosappco/src/screens/profile_web.dart'; -import 'package:prosappco/src/screens/service_after.dart'; -import 'package:prosappco/src/screens/service_type.dart'; -import 'package:prosappco/src/screens/ubicacion.dart'; +import 'package:prosappco/src/presentation/screens/profile/profile.dart'; +import 'package:prosappco/src/presentation/screens/profile/profile_web.dart'; +import 'package:prosappco/src/presentation/screens/service_after.dart'; +import 'package:prosappco/src/presentation/screens/service_type.dart'; +import 'package:prosappco/src/presentation/screens/ubicacion.dart'; import 'package:http/http.dart' as http; import 'package:prosappco/src/components/network_utility.dart'; import 'package:package_info_plus/package_info_plus.dart'; @@ -62,7 +62,7 @@ class _ServiceScreenState extends State { // PolylinePoints polylinePoints = PolylinePoints(); // PolylineResult result = await polylinePoints.getRouteBetweenCoordinates( - // 'AIzaSyBp7vsJvD6oXz0FORBLEeIELwId4a2onHQ', + // 'AIzaSyCW_og6qQ8W8G-5_BxIS4sBnl8cLkjL95s', // PointLatLng(startLat, startLng), // PointLatLng(endLat, endLng), // ); @@ -738,6 +738,7 @@ class _ServiceScreenState extends State { height: MediaQuery.of(context).size.height * 0.5, child: GoogleMap( myLocationEnabled: true, + myLocationButtonEnabled: false, mapType: MapType.normal, initialCameraPosition: initialCameraPosition, markers: markers, diff --git a/lib/src/screens/service_after.dart b/lib/src/presentation/screens/service_after.dart similarity index 99% rename from lib/src/screens/service_after.dart rename to lib/src/presentation/screens/service_after.dart index 6cade80..7ae0a97 100644 --- a/lib/src/screens/service_after.dart +++ b/lib/src/presentation/screens/service_after.dart @@ -8,7 +8,7 @@ import 'package:prosappco/src/models/event_model.dart'; import 'package:prosappco/src/models/scores_model.dart'; import 'package:prosappco/src/models/setting_model.dart'; import 'package:prosappco/src/models/user_model.dart'; -import 'package:prosappco/src/screens/service.dart'; +import 'package:prosappco/src/presentation/screens/service.dart'; class ServiceAfterScreen extends StatefulWidget { var eventoId; diff --git a/lib/src/screens/service_type.dart b/lib/src/presentation/screens/service_type.dart similarity index 97% rename from lib/src/screens/service_type.dart rename to lib/src/presentation/screens/service_type.dart index 30f50ba..daba9bc 100644 --- a/lib/src/screens/service_type.dart +++ b/lib/src/presentation/screens/service_type.dart @@ -1,7 +1,7 @@ import 'package:diacritic/diacritic.dart'; import 'package:flutter/material.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; -import 'package:prosappco/src/screens/profession.dart'; +import 'package:prosappco/src/presentation/screens/profession.dart'; class ServiceTypeScreen extends StatefulWidget { const ServiceTypeScreen({super.key}); diff --git a/lib/src/screens/solicitudes.dart b/lib/src/presentation/screens/solicitudes.dart similarity index 99% rename from lib/src/screens/solicitudes.dart rename to lib/src/presentation/screens/solicitudes.dart index 683b848..9f988b6 100644 --- a/lib/src/screens/solicitudes.dart +++ b/lib/src/presentation/screens/solicitudes.dart @@ -6,7 +6,7 @@ import 'package:intl/intl.dart'; import 'package:prosappco/src/components/drawer_professional.dart'; import 'package:prosappco/src/models/event_model.dart'; import 'package:prosappco/src/models/scores_model.dart'; -import 'package:prosappco/src/screens/cita.dart'; +import 'package:prosappco/src/presentation/screens/cita.dart'; class SolicitudScreen extends StatelessWidget { SolicitudScreen({super.key}); diff --git a/lib/src/screens/support.dart b/lib/src/presentation/screens/support.dart similarity index 100% rename from lib/src/screens/support.dart rename to lib/src/presentation/screens/support.dart diff --git a/lib/src/screens/ubicacion.dart b/lib/src/presentation/screens/ubicacion.dart similarity index 97% rename from lib/src/screens/ubicacion.dart rename to lib/src/presentation/screens/ubicacion.dart index f36b9db..4af661b 100644 --- a/lib/src/screens/ubicacion.dart +++ b/lib/src/presentation/screens/ubicacion.dart @@ -3,7 +3,7 @@ import 'dart:convert'; import 'package:prosappco/src/components/network_utility.dart'; import 'package:prosappco/src/components/pop_appbar.dart'; -import '../authentication/authentication_repository.dart'; +import '../../authentication/authentication_repository.dart'; class UbicacionScreen extends StatefulWidget { const UbicacionScreen({super.key}); diff --git a/lib/src/screens/web_view.dart b/lib/src/presentation/screens/web_view.dart similarity index 100% rename from lib/src/screens/web_view.dart rename to lib/src/presentation/screens/web_view.dart diff --git a/lib/src/presentation/widgets/profile/birth_date_picker.dart b/lib/src/presentation/widgets/profile/birth_date_picker.dart new file mode 100644 index 0000000..4954233 --- /dev/null +++ b/lib/src/presentation/widgets/profile/birth_date_picker.dart @@ -0,0 +1,50 @@ +import 'package:flutter/material.dart'; + +class BirthDatePicker extends StatefulWidget { + final Function(DateTime) onDateSelected; + final TextEditingController controller; + + const BirthDatePicker( + {Key? key, required this.onDateSelected, required this.controller}) + : super(key: key); + + @override + _BirthDatePickerState createState() => _BirthDatePickerState(); +} + +class _BirthDatePickerState extends State { + DateTime selectedDate = + DateTime.now().subtract(const Duration(days: 365 * 20)); + + Future _selectDate(BuildContext context) async { + final DateTime? picked = await showDatePicker( + context: context, + initialDate: selectedDate, + firstDate: DateTime.now().subtract(const Duration(days: 365 * 120)), + lastDate: DateTime.now(), + ); + + if (picked != null && picked != selectedDate) { + setState(() { + selectedDate = picked; + widget.onDateSelected(selectedDate); + }); + } + } + + @override + Widget build(BuildContext context) { + return TextFormField( + onTap: () { + _selectDate(context); + }, + readOnly: true, + decoration: const InputDecoration( + prefixIcon: Icon(Icons.calendar_month), + suffixIcon: Icon(Icons.arrow_drop_down), + hintText: 'Fecha de nacimiento', + ), + controller: widget.controller, + ); + } +} diff --git a/lib/src/presentation/widgets/profile/gender_dropdown.dart b/lib/src/presentation/widgets/profile/gender_dropdown.dart new file mode 100644 index 0000000..7a212c5 --- /dev/null +++ b/lib/src/presentation/widgets/profile/gender_dropdown.dart @@ -0,0 +1,45 @@ +import 'package:flutter/material.dart'; + +class GenderDropdown extends StatefulWidget { + final Function(String) onChanged; + + const GenderDropdown({Key? key, required this.onChanged}) : super(key: key); + + @override + _GenderDropdownState createState() => _GenderDropdownState(); +} + +class _GenderDropdownState extends State { + String? selectedGender; + + @override + Widget build(BuildContext context) { + return InputDecorator( + decoration: const InputDecoration( + border: UnderlineInputBorder(), + prefixIcon: Icon(Icons.people_outline), + contentPadding: EdgeInsets.symmetric(horizontal: 8.0), + ), + child: DropdownButtonHideUnderline( + child: DropdownButton( + isExpanded: true, + value: selectedGender, + hint: const Text('Selecciona tu género'), + onChanged: (String? newValue) { + setState(() { + selectedGender = newValue; + widget.onChanged(selectedGender!); + }); + }, + items: ['Masculino', 'Femenino', 'Otro'] + .map>((String value) { + return DropdownMenuItem( + value: value, + child: Text(value), + ); + }).toList(), + ), + ), + ); + } +} diff --git a/lib/src/components/drawer_menu.dart b/lib/src/presentation/widgets/shared/drawer_menu.dart similarity index 96% rename from lib/src/components/drawer_menu.dart rename to lib/src/presentation/widgets/shared/drawer_menu.dart index 3197395..3e9e41f 100644 --- a/lib/src/components/drawer_menu.dart +++ b/lib/src/presentation/widgets/shared/drawer_menu.dart @@ -7,14 +7,14 @@ import 'package:prosappco/src/components/photo_view.dart'; import 'package:prosappco/src/models/scores_model.dart'; import 'package:prosappco/src/models/user_model.dart'; import 'package:prosappco/src/providers/user_provider.dart'; -import 'package:prosappco/src/screens/configuracion.dart'; -import 'package:prosappco/src/screens/messages_user.dart'; -import 'package:prosappco/src/screens/professional_profile_web.dart'; -import 'package:prosappco/src/screens/profile.dart'; -import 'package:prosappco/src/screens/profile_web.dart'; -import 'package:prosappco/src/screens/reputation.dart'; -import 'package:prosappco/src/screens/support.dart'; -import 'package:prosappco/src/screens/web_view.dart'; +import 'package:prosappco/src/presentation/screens/configuracion.dart'; +import 'package:prosappco/src/presentation/screens/messages_user.dart'; +import 'package:prosappco/src/presentation/screens/professional_profile_web.dart'; +import 'package:prosappco/src/presentation/screens/profile/profile.dart'; +import 'package:prosappco/src/presentation/screens/profile/profile_web.dart'; +import 'package:prosappco/src/presentation/screens/reputation.dart'; +import 'package:prosappco/src/presentation/screens/support.dart'; +import 'package:prosappco/src/presentation/screens/web_view.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:get/get.dart'; import 'package:provider/provider.dart'; diff --git a/lib/src/presentation/widgets/shared/primary_button.dart b/lib/src/presentation/widgets/shared/primary_button.dart new file mode 100644 index 0000000..b134c5f --- /dev/null +++ b/lib/src/presentation/widgets/shared/primary_button.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; + +class PrimaryButton extends StatelessWidget { + final VoidCallback onPressed; + final String text; + final double? minWidth; + final double? minHeight; + + const PrimaryButton( + {super.key, + required this.onPressed, + required this.text, + this.minWidth = 200, + this.minHeight = 50}); + + @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: Size(minWidth!, minHeight!), + ), + child: Text( + text, + style: const TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 17, + ), + )); + } +} diff --git a/pubspec.lock b/pubspec.lock index c12d125..49bed58 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -109,10 +109,10 @@ packages: dependency: transitive description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" url: "https://pub.dev" source: hosted - version: "1.17.2" + version: "1.17.1" community_material_icon: dependency: "direct main" description: @@ -737,10 +737,10 @@ packages: dependency: "direct main" description: name: intl - sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 url: "https://pub.dev" source: hosted - version: "0.18.1" + version: "0.18.0" intl_phone_field: dependency: "direct main" description: @@ -777,18 +777,18 @@ packages: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.15" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.2.0" meta: dependency: transitive description: @@ -1022,10 +1022,10 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.9.1" stack_trace: dependency: transitive description: @@ -1078,10 +1078,10 @@ packages: dependency: transitive description: name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.5.1" timezone: dependency: transitive description: @@ -1202,14 +1202,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" - web: - dependency: transitive - description: - name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 - url: "https://pub.dev" - source: hosted - version: "0.1.4-beta" webview_flutter: dependency: "direct main" description: @@ -1275,5 +1267,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.1.0-185.0.dev <4.0.0" + dart: ">=3.0.0 <4.0.0" flutter: ">=3.10.0"