# Análisis Exhaustivo de `Map` en el Proyecto Este documento detalla todos los usos del tipo `Map` encontrados en los archivos `.dart` del proyecto, incluyendo variables, listas, parámetros y tipos de retorno de funciones. --- ### `lib/widgets/shift_card.dart` #### 1. Tipo de Retorno de Función: `Map _calculateDuration()` * **Propósito:** Calcula la duración de un turno en horas y devuelve también una cadena de texto para el tiempo de descanso. * **Estructura del `Map` devuelto:** ```dart { 'hours': int, 'breakTime': String, } ``` --- ### `lib/services/mock_service.dart` #### 1. Parámetro de Función: `Future createWorkerProfile(Map data)` * **Propósito:** Simula la creación de un perfil de trabajador. Acepta un `Map` llamado `data` que contiene la información del perfil del nuevo trabajador. * **Estructura Inferida (por su uso):** ```dart { 'full_name': String, 'bio': String, 'preferred_locations': List, 'max_distance_miles': double, 'skills': List, 'industries': List, } ``` --- ### `lib/screens/auth/profile_setup_screen.dart` #### 1. Variable: `static const List> _steps` * **Propósito:** Define los pasos en el asistente de creación de perfiles. * **Estructura de cada elemento:** ```dart { 'id': String, 'title': String, 'icon': IconData } ``` #### 2. Argumento de Función: (Anónimo) en `mockService.createWorkerProfile` * **Propósito:** Recopila y envía los datos del perfil del nuevo usuario al servicio mock. * **Estructura:** ```dart { 'full_name': String, 'bio': String, 'preferred_locations': List, 'max_distance_miles': double, 'skills': List, 'industries': List } ``` --- ### `lib/screens/worker/benefits_screen.dart` #### 1. Variable: `final List> _benefitsData` * **Propósito:** Contiene los datos de simulación (mock) para los diferentes beneficios del trabajador. * **Estructura de cada elemento:** ```dart { 'id': String, 'title': String, 'current': int, 'total': int, 'color': Color, 'description': String, 'history': List>, // <- Lista anidada 'requestLabel': String, 'notice': String?, } ``` * **Estructura anidada de `history`:** ```dart { 'date': String, 'status': String } ``` #### 2. Parámetro de Función: `void _handleRequest(Map benefit)` * **Propósito:** Maneja la acción cuando un usuario solicita un beneficio. * **Estructura:** La misma que los elementos de `_benefitsData`. #### 3. Parámetro de Widget: `final Map benefit` * **Propósito:** El widget `_BenefitCard` recibe un `Map` para mostrar los detalles de un beneficio. * **Estructura:** La misma que los elementos de `_benefitsData`. --- ### `lib/screens/worker/worker_profile_screen.dart` #### 1. Variable: `final Map _user` * **Propósito:** Almacena datos básicos de identificación del usuario. * **Estructura:** ```dart { 'full_name': String, 'email': String, } ``` #### 2. Variable: `final Map _profile` * **Propósito:** Almacena estadísticas y atributos detallados del perfil del trabajador. * **Estructura:** ```dart { 'level': String, 'photo_url': String?, 'total_shifts': int, 'average_rating': double, 'on_time_rate': int, 'no_show_count': int, 'cancellation_count': int, 'reliability_score': int, 'phone': String, 'skills': List, } ``` --- ### `lib/screens/worker/worker_profile/onboarding/emergency_contact_screen.dart` #### 1. Variable: `final List> _contacts` * **Propósito:** Almacena una lista de los contactos de emergencia. * **Estructura de cada elemento:** ```dart { 'name': String, 'phone': String, 'relationship': String } ``` #### 2. Parámetro de Función: `Widget _buildContactForm(int index, Map contact)` * **Propósito:** Construye el widget del formulario para un contacto. * **Estructura:** La misma que los elementos de `_contacts`. --- ### `lib/screens/worker/worker_profile/onboarding/personal_info_screen.dart` #### 1. Variable: `final Map _user` * **Propósito:** Almacena los datos básicos del usuario para el formulario. * **Estructura:** ```dart { 'full_name': String, 'email': String, 'photo_url': String?, } ``` --- ### `lib/screens/worker/worker_profile/finances/time_card_screen.dart` #### 1. Variable: `final List> _timesheets` * **Propósito:** Almacena una lista de registros de hojas de tiempo (timesheets). * **Estructura de cada elemento:** ```dart { 'id': String, 'shift_id': String, 'date': String, // ISO 8601 'actual_start': String, 'actual_end': String, 'total_hours': double, 'hourly_rate': double, 'total_pay': double, 'status': String, 'shift_title': String, 'client_name': String, 'location': String, } ``` #### 2. Parámetro de Función: `Widget _buildShiftHistory(List> timesheets)` * **Propósito:** Construye la sección de historial de turnos. * **Estructura:** Una lista donde cada elemento tiene la estructura de `_timesheets`. #### 3. Parámetro de Función: `Widget _buildTimesheetCard(Map timesheet)` * **Propósito:** Construye la tarjeta para una sola hoja de tiempo. * **Estructura:** La misma que los elementos de `_timesheets`. --- ### `lib/screens/worker/worker_profile/finances/bank_account_screen.dart` #### 1. Variable: `final List> _accounts` * **Propósito:** Almacena una lista de las cuentas bancarias vinculadas. * **Estructura de cada elemento:** ```dart { 'id': int, 'bank': String, 'type': String, 'last4': String, 'isPrimary': bool, } ``` #### 2. Parámetro de Función: `Widget _buildAccountCard(Map account)` * **Propósito:** Construye la tarjeta para una sola cuenta bancaria. * **Estructura:** La misma que los elementos de `_accounts`. --- ### `lib/screens/worker/worker_profile/level_up/trainings_screen.dart` #### 1. Variable: `final List> _courses` * **Propósito:** Almacena una lista de cursos de capacitación. * **Estructura de cada elemento:** ```dart { 'id': String, 'title': String, 'description': String, 'duration_minutes': int, 'xp_reward': int, 'thumbnail_url': String?, 'progress_percent': int, 'completed': bool, } ``` --- ### `lib/screens/worker/worker_profile/level_up/leaderboard_screen.dart` #### 1. Variable: `final List> _profiles` * **Propósito:** Almacena los datos de los perfiles para la tabla de clasificación. * **Estructura de cada elemento:** ```dart { 'id': String, 'name': String, 'photo_url': String?, 'xp': int, 'level': String, 'user_id': String, } ``` #### 2. Variable: `final sortedProfiles = List>.from(_profiles)` * **Propósito:** Crea una copia mutable de la lista de perfiles para ordenarla. * **Estructura:** Los elementos tienen la misma estructura que `_profiles`. #### 3. Parámetro de Función: `Widget _buildPodium(List> topThree)` * **Propósito:** Construye la sección del podio con los 3 mejores perfiles. * **Estructura:** Una lista donde cada mapa tiene la estructura de un elemento de `_profiles`. #### 4. Parámetro de Función: `Map profile` (en `_buildPodiumItem`) * **Propósito:** Construye el item para un perfil en el podio. * **Estructura:** La misma que un elemento de `_profiles`. #### 5. Parámetro de Función: `Widget _buildRestList(List> rest, ...)` * **Propósito:** Construye la lista para el resto de los perfiles. * **Estructura:** Una lista donde cada mapa tiene la estructura de un elemento de `_profiles`. --- ### `lib/screens/worker/worker_profile/onboarding/attire_screen.dart` #### 1. Variable: `final List> _attireOptions` * **Propósito:** Define las opciones de vestimenta que un trabajador puede seleccionar. * **Estructura de cada elemento:** ```dart { 'id': String, 'label': String, 'icon': IconData, 'imageUrl': String, } ``` --- ### `lib/screens/worker/worker_profile/support/faqs_screen.dart` #### 1. Variable: `final List> _faqData` * **Propósito:** Almacena los datos de las preguntas frecuentes, organizados por categoría. * **Estructura de cada elemento (categoría):** ```dart { 'category': String, 'questions': List>, // <- Lista anidada } ``` * **Estructura anidada de `questions`:** ```dart { 'q': String, // Pregunta 'a': String, // Respuesta } ``` --- ### `lib/screens/worker/worker_profile/support/messages_screen.dart` #### 1. Variable: `final List> _conversations` * **Propósito:** Contiene los datos de simulación para las conversaciones de chat. * **Estructura de cada elemento (conversación):** ```dart { 'sender_id': String, 'sender_name': String, 'lastMessage': String, 'lastTime': DateTime, 'unread': int, 'messages': List>, // <- Lista anidada } ``` * **Estructura anidada de `messages`:** ```dart { 'content': String, 'sender_id': String, } ``` #### 2. Variable: `Map? _selectedChat` * **Propósito:** Almacena la conversación que el usuario ha seleccionado para ver. * **Estructura:** La misma que un elemento de `_conversations`. --- ### `lib/screens/worker/payments_screen.dart` #### 1. Variable: `final List> _recentPayments` * **Propósito:** Almacena registros detallados de pagos recientes. * **Estructura de cada elemento:** ```dart { 'date': String, 'title': String, 'location': String, 'address': String, 'workedTime': String, 'amount': double, 'status': String, 'hours': int, 'rate': int, // Debería ser double } ``` --- ### `lib/screens/worker/worker_profile/compliance/documents_screen.dart` #### 1. Variable: `final List> _requiredDocs` * **Propósito:** Almacena la lista de documentos de cumplimiento requeridos. * **Estructura de cada elemento:** ```dart { 'id': String, 'name': String, 'description': String, 'status': String, } ``` #### 2. Parámetro de Función: `Widget _buildDocumentCard(Map doc)` * **Propósito:** Construye la tarjeta de UI para un solo documento. * **Estructura:** La misma que los elementos de `_requiredDocs`. --- ### `lib/screens/worker/worker_profile/compliance/tax_forms_screen.dart` #### 1. Variable: `final List> _forms` * **Propósito:** Almacena la lista de formularios de impuestos. * **Estructura de cada elemento:** ```dart { 'id': String, 'title': String, 'subtitle': String, 'description': String, 'status': String, 'icon': String, // Emoji } ``` #### 2. Parámetro de Función: `Widget _buildFormCard(Map form)` * **Propósito:** Construye la tarjeta de UI para un solo formulario. * **Estructura:** La misma que los elementos de `_forms`. --- ### `lib/screens/worker/availability_screen.dart` #### 1. Variable: `final List> _timeSlots` * **Propósito:** Define las propiedades de los diferentes rangos horarios para la disponibilidad. * **Estructura de cada elemento:** ```dart { 'id': String, 'label': String, 'time': String, 'icon': IconData, 'bg': Color, 'iconColor': Color, } ``` --- ### `lib/screens/worker/worker_profile/compliance/certificates_screen.dart` #### 1. Variable: `final List> _certificates` * **Propósito:** Almacena la lista de certificados de cumplimiento del trabajador. * **Estructura de cada elemento:** ```dart { 'id': String, 'name': String, 'icon': IconData, 'color': Color, 'description': String, 'status': String, 'expiry': String?, // ISO 8601 } ``` #### 2. Parámetro de Función: `Widget _buildCertificateCard(Map cert)` * **Propósito:** Construye la tarjeta de UI para un solo certificado. * **Estructura:** La misma que los elementos de `_certificates`. #### 3. Parámetro de Función: `void _showUploadModal(BuildContext context, Map? cert)` * **Propósito:** Muestra un modal para subir un certificado. * **Estructura:** La misma que los elementos de `_certificates`. --- ### `lib/screens/worker/worker_profile/compliance/taxforms/form_i9_screen.dart` #### 1. Variable: `final Map _formData` * **Propósito:** Almacena el estado de los campos del formulario I-9. * **Estructura:** ```dart { 'lastName': String, 'firstName': String, 'middleInitial': String, 'otherLastNames': String, 'address': String, 'aptNumber': String, 'city': String, 'state': String?, 'zipCode': String, 'dateOfBirth': String, 'ssn': String, 'email': String, 'phone': String, 'citizenshipStatus': String, 'uscisNumber': String, 'i94Number': String, 'foreignPassportNumber': String, 'countryOfIssuance': String, 'expirationDate': String, } ``` --- ### `lib/screens/worker/worker_profile/compliance/taxforms/form_w4_screen.dart` #### 1. Variable: `final Map _formData` * **Propósito:** Almacena el estado de los campos del formulario W-4. * **Estructura:** ```dart { 'firstName': String, 'lastName': String, 'address': String, 'cityStateZip': String, 'ssn': String, 'filingStatus': String, 'multipleJobs': bool, 'qualifyingChildren': int, 'otherDependents': int, 'otherIncome': String, 'deductions': String, 'extraWithholding': String, } ``` --- ### `lib/screens/worker/worker_profile/level_up/krow_university_screen.dart` #### 1. Variable: `final Map _profile` * **Propósito:** Almacena un subconjunto de datos del perfil relevantes para la universidad. * **Estructura:** ```dart { 'level': String, 'xp': int, 'badges': List, } ``` #### 2. Variable: `final List> _levels` * **Propósito:** Define los diferentes niveles de Krower y sus propiedades. * **Estructura de cada elemento:** ```dart { 'name': String, 'xpRequired': int, 'icon': IconData, 'colors': List, } ``` #### 3. Variable: `final List> _categories` * **Propósito:** Define las categorías para los cursos. * **Estructura de cada elemento:** ```dart { 'id': String, 'label': String, 'icon': IconData, } ``` #### 4. Variable: `final List> _courses` * **Propósito:** Almacena la lista de cursos disponibles. * **Estructura de cada elemento:** ```dart { 'id': String, 'title': String, 'description': String, 'category': String, 'duration_minutes': int, 'xp_reward': int, 'level_required': String, 'is_certification': bool, 'progress_percent': int, 'completed': bool, } ``` #### 5. Parámetro de Función: `Widget _buildCoursesList(List> courses)` * **Propósito:** Construye la lista de widgets de cursos. * **Estructura:** Una lista donde cada mapa tiene la estructura de un elemento de `_courses`. --- ### `lib/screens/worker/earnings_screen.dart` #### 1. Variable: `final List> _recentPayments` * **Propósito:** Almacena resúmenes de pagos recientes. * **Estructura de cada elemento:** ```dart { 'date': String, 'amount': double, 'shifts': int, 'status': String, } ``` --- ### `lib/screens/worker/clock_in_screen.dart` #### 1. Variable: `final List> _recentActivity` * **Propósito:** Almacena una lista de actividades recientes de fichaje. * **Estructura de cada elemento:** ```dart { 'date': DateTime, 'start': String, 'end': String, 'hours': String, } ```