Files
Krow-workspace/mock_staff_data_v3_update.md
2025-12-26 15:14:51 -05:00

17 KiB

Análisis Exhaustivo de Map<String, dynamic> en el Proyecto

Este documento detalla todos los usos del tipo Map<String, dynamic> 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<String, dynamic> _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:
    {
      'hours': int,
      'breakTime': String,
    }
    

lib/services/mock_service.dart

1. Parámetro de Función: Future<void> createWorkerProfile(Map<String, dynamic> 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):
    {
      'full_name': String,
      'bio': String,
      'preferred_locations': List<String>,
      'max_distance_miles': double,
      'skills': List<String>,
      'industries': List<String>,
    }
    

lib/screens/auth/profile_setup_screen.dart

1. Variable: static const List<Map<String, dynamic>> _steps

  • Propósito: Define los pasos en el asistente de creación de perfiles.
  • Estructura de cada elemento:
    {
      '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:
    {
      'full_name': String,
      'bio': String,
      'preferred_locations': List<String>,
      'max_distance_miles': double,
      'skills': List<String>,
      'industries': List<String>
    }
    

lib/screens/worker/benefits_screen.dart

1. Variable: final List<Map<String, dynamic>> _benefitsData

  • Propósito: Contiene los datos de simulación (mock) para los diferentes beneficios del trabajador.
  • Estructura de cada elemento:
    {
      'id': String,
      'title': String,
      'current': int,
      'total': int,
      'color': Color,
      'description': String,
      'history': List<Map<String, dynamic>>, // <- Lista anidada
      'requestLabel': String,
      'notice': String?,
    }
    
    • Estructura anidada de history:
      {
        'date': String,
        'status': String
      }
      

2. Parámetro de Función: void _handleRequest(Map<String, dynamic> 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<String, dynamic> 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<String, dynamic> _user

  • Propósito: Almacena datos básicos de identificación del usuario.
  • Estructura:
    {
      'full_name': String,
      'email': String,
    }
    

2. Variable: final Map<String, dynamic> _profile

  • Propósito: Almacena estadísticas y atributos detallados del perfil del trabajador.
  • Estructura:
    {
      '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<Map<String, dynamic>> _contacts

  • Propósito: Almacena una lista de los contactos de emergencia.
  • Estructura de cada elemento:
    {
      'name': String,
      'phone': String,
      'relationship': String
    }
    

2. Parámetro de Función: Widget _buildContactForm(int index, Map<String, dynamic> 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<String, dynamic> _user

  • Propósito: Almacena los datos básicos del usuario para el formulario.
  • Estructura:
    {
      'full_name': String,
      'email': String,
      'photo_url': String?,
    }
    

lib/screens/worker/worker_profile/finances/time_card_screen.dart

1. Variable: final List<Map<String, dynamic>> _timesheets

  • Propósito: Almacena una lista de registros de hojas de tiempo (timesheets).
  • Estructura de cada elemento:
    {
      '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<Map<String, dynamic>> 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<String, dynamic> 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<Map<String, dynamic>> _accounts

  • Propósito: Almacena una lista de las cuentas bancarias vinculadas.
  • Estructura de cada elemento:
    {
      'id': int,
      'bank': String,
      'type': String,
      'last4': String,
      'isPrimary': bool,
    }
    

2. Parámetro de Función: Widget _buildAccountCard(Map<String, dynamic> 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<Map<String, dynamic>> _courses

  • Propósito: Almacena una lista de cursos de capacitación.
  • Estructura de cada elemento:
    {
      '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<Map<String, dynamic>> _profiles

  • Propósito: Almacena los datos de los perfiles para la tabla de clasificación.
  • Estructura de cada elemento:
    {
      'id': String,
      'name': String,
      'photo_url': String?,
      'xp': int,
      'level': String,
      'user_id': String,
    }
    

2. Variable: final sortedProfiles = List<Map<String, dynamic>>.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<Map<String, dynamic>> 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<String, dynamic> 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<Map<String, dynamic>> 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<Map<String, dynamic>> _attireOptions

  • Propósito: Define las opciones de vestimenta que un trabajador puede seleccionar.
  • Estructura de cada elemento:
    {
      'id': String,
      'label': String,
      'icon': IconData,
      'imageUrl': String,
    }
    

lib/screens/worker/worker_profile/support/faqs_screen.dart

1. Variable: final List<Map<String, dynamic>> _faqData

  • Propósito: Almacena los datos de las preguntas frecuentes, organizados por categoría.
  • Estructura de cada elemento (categoría):
    {
      'category': String,
      'questions': List<Map<String, dynamic>>, // <- Lista anidada
    }
    
    • Estructura anidada de questions:
      {
        'q': String, // Pregunta
        'a': String, // Respuesta
      }
      

lib/screens/worker/worker_profile/support/messages_screen.dart

1. Variable: final List<Map<String, dynamic>> _conversations

  • Propósito: Contiene los datos de simulación para las conversaciones de chat.
  • Estructura de cada elemento (conversación):
    {
      'sender_id': String,
      'sender_name': String,
      'lastMessage': String,
      'lastTime': DateTime,
      'unread': int,
      'messages': List<Map<String, dynamic>>, // <- Lista anidada
    }
    
    • Estructura anidada de messages:
      {
        'content': String,
        'sender_id': String,
      }
      

2. Variable: Map<String, dynamic>? _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<Map<String, dynamic>> _recentPayments

  • Propósito: Almacena registros detallados de pagos recientes.
  • Estructura de cada elemento:
    {
      '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<Map<String, dynamic>> _requiredDocs

  • Propósito: Almacena la lista de documentos de cumplimiento requeridos.
  • Estructura de cada elemento:
    {
      'id': String,
      'name': String,
      'description': String,
      'status': String,
    }
    

2. Parámetro de Función: Widget _buildDocumentCard(Map<String, dynamic> 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<Map<String, dynamic>> _forms

  • Propósito: Almacena la lista de formularios de impuestos.
  • Estructura de cada elemento:
    {
      'id': String,
      'title': String,
      'subtitle': String,
      'description': String,
      'status': String,
      'icon': String, // Emoji
    }
    

2. Parámetro de Función: Widget _buildFormCard(Map<String, dynamic> 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<Map<String, dynamic>> _timeSlots

  • Propósito: Define las propiedades de los diferentes rangos horarios para la disponibilidad.
  • Estructura de cada elemento:
    {
      '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<Map<String, dynamic>> _certificates

  • Propósito: Almacena la lista de certificados de cumplimiento del trabajador.
  • Estructura de cada elemento:
    {
      '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<String, dynamic> 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<String, dynamic>? 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<String, dynamic> _formData

  • Propósito: Almacena el estado de los campos del formulario I-9.
  • Estructura:
    {
      '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<String, dynamic> _formData

  • Propósito: Almacena el estado de los campos del formulario W-4.
  • Estructura:
    {
      '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<String, dynamic> _profile

  • Propósito: Almacena un subconjunto de datos del perfil relevantes para la universidad.
  • Estructura:
    {
      'level': String,
      'xp': int,
      'badges': List<String>,
    }
    

2. Variable: final List<Map<String, dynamic>> _levels

  • Propósito: Define los diferentes niveles de Krower y sus propiedades.
  • Estructura de cada elemento:
    {
      'name': String,
      'xpRequired': int,
      'icon': IconData,
      'colors': List<Color>,
    }
    

3. Variable: final List<Map<String, dynamic>> _categories

  • Propósito: Define las categorías para los cursos.
  • Estructura de cada elemento:
    {
      'id': String,
      'label': String,
      'icon': IconData,
    }
    

4. Variable: final List<Map<String, dynamic>> _courses

  • Propósito: Almacena la lista de cursos disponibles.
  • Estructura de cada elemento:
    {
      '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<Map<String, dynamic>> 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<Map<String, dynamic>> _recentPayments

  • Propósito: Almacena resúmenes de pagos recientes.
  • Estructura de cada elemento:
    {
      'date': String,
      'amount': double,
      'shifts': int,
      'status': String,
    }
    

lib/screens/worker/clock_in_screen.dart

1. Variable: final List<Map<String, dynamic>> _recentActivity

  • Propósito: Almacena una lista de actividades recientes de fichaje.
  • Estructura de cada elemento:
    {
      'date': DateTime,
      'start': String,
      'end': String,
      'hours': String,
    }