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

48 KiB

He analizado lib/screens/auth/profile_setup_screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _steps
  • Propósito: Define los pasos del proceso de configuración del perfil.
  • Estructura de cada elemento Map<String, dynamic>:

1 { 2 'id': String, // Ejemplo: 'basic' 3 'title': String, // Ejemplo: 'Basic Info' 4 'icon': IconData // Ejemplo: LucideIcons.user 5 }

Ahora, pasaré al siguiente archivo: lib/screens/worker/benefits_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../worker/benefits_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/benefits_screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _benefitsData
  • Propósito: Representa una lista de beneficios disponibles para el trabajador.
  • Estructura de cada elemento Map<String, dynamic>:
1     {
2       'id': String,            // Ejemplo: 'sick', 'vacation'
3       'title': String,         // Ejemplo: 'Sick Days', 'Vacation'
4       'current': int,          // Horas/cantidad actuales
5       'total': int,            // Horas/cantidad totales
6       'color': Color,          // Color para la visualización
7       'description': String,   // Descripción del beneficio
8       'history': List<Map<String, dynamic>>, // Lista anidada para el historial de beneficios
9       'requestLabel': String,  // Texto para el botón de solicitud

10 'notice': String?, // Texto de aviso opcional 11 }

  • Estructura Anidada (history): Cada elemento en la lista history tiene: 1 { 2 'date': String, // Ejemplo: '1 Jan, 2024' 3 'status': String, // Ejemplo: 'Pending', 'Submitted' 4 }

El siguiente archivo es: lib/screens/worker/worker_profile/finances/time_card_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../time_card_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/worker_profile/finances/time_card_screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _timesheets
  • Propósito: Representa una lista de hojas de tiempo registradas para los turnos trabajados por el empleado.
  • Estructura de cada elemento Map<String, dynamic>:
1     {
2       'id': String,            // Identificador único de la hoja de tiempo
3       'shift_id': String,      // ID del turno asociado
4       'date': String,          // Cadena ISO 8601 para la fecha, e.g., "2023-12-21T..."
5       'actual_start': String,  // Hora de inicio real, e.g., '09:00'
6       'actual_end': String,    // Hora de finalización real, e.g., '17:00'
7       'total_hours': double,   // Horas totales trabajadas en el turno
8       'hourly_rate': double,   // Tarifa por hora del turno
9       'total_pay': double,     // Pago total por el turno

10 'status': String, // Estado de la hoja de tiempo, e.g., 'pending', 'approved', 'paid', 'disputed' 11 'shift_title': String, // Título del turno, e.g., 'Line Cook' 12 'client_name': String, // Nombre del cliente 13 'location': String, // Ubicación del turno 14 }

El siguiente archivo es: lib/screens/worker/worker_profile/support/faqs_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../support/faqs_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/worker_profile/support/faqs_screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _faqData
  • Propósito: Representa una lista categorizada de preguntas frecuentes.
  • Estructura de cada elemento Map<String, dynamic> (que representa una categoría de FAQ):

1 { 2 'category': String, // Ejemplo: 'Getting Started', 'Shifts & Work' 3 'questions': List<Map<String, dynamic>>, // Lista anidada de preguntas y respuestas 4 }

  • Estructura Anidada (questions): Cada elemento en la lista questions tiene:

1 { 2 'q': String, // El texto de la pregunta 3 'a': String, // El texto de la respuesta 4 }

El siguiente archivo es: lib/screens/worker/worker_profile/onboarding/emergency_contact_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile l/.../emergency_contact_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/worker_profile/onboarding/emergency_contact_screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _contacts
  • Propósito: Representa una lista de contactos de emergencia para el trabajador.
  • Estructura de cada elemento Map<String, dynamic> (que representa un contacto de emergencia):

1 { 2 'name': String, // Nombre del contacto 3 'phone': String, // Número de teléfono del contacto 4 'relationship': String, // Relación con el trabajador, e.g., 'family', 'spouse', 'friend', 'other' 5 }

El siguiente archivo es: lib/screens/worker/worker_profile/support/messages_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../messages_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/worker_profile/support/messages_screen.dart.

Este archivo contiene dos estructuras principales de List<Map<String, dynamic>>:

  1. Nombre de la variable: _conversations
    • Propósito: Representa una lista de conversaciones de chat.
    • Estructura de cada elemento Map<String, dynamic> (que representa una conversación individual):

1 { 2 'sender_id': String, // ID del remitente/otra parte en la conversación 3 'sender_name': String, // Nombre visible del remitente/otra parte 4 'lastMessage': String, // Contenido del último mensaje en la conversación 5 'lastTime': DateTime, // Marca de tiempo del último mensaje 6 'unread': int, // Número de mensajes no leídos en la conversación 7 'messages': List<Map<String, dynamic>>, // Lista anidada de mensajes individuales dentro de la conversación 8 } * Estructura Anidada (messages): Cada elemento en la lista messages tiene:

1 { 2 'content': String, // El contenido del mensaje 3 'sender_id': String, // El ID del remitente de este mensaje específico 4 }

El siguiente archivo es: lib/screens/worker/worker_profile/onboarding/attire_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../attire_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/worker_profile/onboarding/attire_screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _attireOptions
  • Propósito: Representa una lista de diferentes artículos de vestimenta que un trabajador podría necesitar o poseer.
  • Estructura de cada elemento Map<String, dynamic> (que representa un artículo de vestimenta):

1 { 2 'id': String, // Identificador único para el artículo de vestimenta, e.g., 'non_slip_shoes' 3 'label': String, // Nombre visible del artículo de vestimenta, e.g., 'Non Slip Shoes' 4 'icon': IconData, // Icono asociado con el artículo de vestimenta, e.g., LucideIcons.footprints 5 'imageUrl': String, // URL de una imagen del artículo de vestimenta 6 }

El siguiente archivo es: lib/screens/worker/worker_profile/level_up/trainings_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../trainings_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/worker_profile/level_up/trainings_screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _courses
  • Propósito: Representa una lista de cursos de capacitación disponibles para el trabajador.
  • Estructura de cada elemento Map<String, dynamic> (que representa un solo curso):
1     {
2       'id': String,            // Identificador único para el curso
3       'title': String,         // Título del curso
4       'description': String,   // Descripción del curso
5       'duration_minutes': int, // Duración del curso en minutos
6       'xp_reward': int,        // Puntos de experiencia otorgados al finalizar
7       'thumbnail_url': String?,// URL opcional para una miniatura del curso
8       'progress_percent': int, // Porcentaje de finalización del curso
9       'completed': bool,       // Indica si el curso está completado

10 }

El siguiente archivo es: lib/screens/worker/worker_profile/compliance/documents_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../documents_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/worker_profile/compliance/documents_screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _requiredDocs
  • Propósito: Representa una lista de documentos requeridos para el cumplimiento del trabajador.
  • Estructura de cada elemento Map<String, dynamic> (que representa un solo documento):

1 { 2 'id': String, // Identificador único para el documento, e.g., 'id', 'ssn' 3 'name': String, // Nombre visible del documento, e.g., 'Government ID' 4 'description': String, // Breve descripción o ejemplos para el documento 5 'status': String, // Estado actual del documento, e.g., 'verified', 'pending', 'missing' 6 }

El siguiente archivo es: lib/screens/worker/worker_profile/finances/bank_account_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../bank_account_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/worker_profile/finances/bank_account_screen.screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _accounts
  • Propósito: Representa una lista de cuentas bancarias vinculadas para el trabajador.
  • Estructura de cada elemento Map<String, dynamic> (que representa una sola cuenta bancaria):

1 { 2 'id': int, // Identificador único para la cuenta 3 'bank': String, // Nombre del banco, e.g., 'Chase Bank' 4 'type': String, // Tipo de cuenta, e.g., 'Checking', 'Savings' 5 'last4': String, // Últimos 4 dígitos del número de cuenta 6 'isPrimary': bool, // Si esta es la cuenta principal 7 }

El siguiente archivo es: lib/screens/worker/worker_profile/compliance/tax_forms_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../tax_forms_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/worker_profile/compliance/tax_forms_screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _forms
  • Propósito: Representa una lista de formularios de impuestos requeridos al trabajador.
  • Estructura de cada elemento Map<String, dynamic> (que representa un solo formulario de impuestos):

1 { 2 'id': String, // Identificador único para el formulario, e.g., 'i9', 'w4' 3 'title': String, // Título oficial del formulario, e.g., 'Form I-9' 4 'subtitle': String, // Subtítulo o nombre completo del formulario 5 'description': String, // Breve descripción del propósito del formulario 6 'status': String, // Estado del formulario, e.g., 'submitted', 'not_started', 'draft', 'approved' 7 'icon': String, // Icono (emoji) o identificador para el icono del formulario 8 }

El siguiente archivo es: lib/screens/worker/worker_profile/compliance/certificates_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../certificates_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/worker_profile/compliance/certificates_screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _certificates
  • Propósito: Representa una lista de certificados (por ejemplo, verificación de antecedentes, manipulador de alimentos) requeridos para el trabajador.
  • Estructura de cada elemento Map<String, dynamic> (que representa un solo certificado):

1 { 2 'id': String, // Identificador único para el certificado, e.g., 'background', 'food_handler' 3 'name': String, // Nombre visible del certificado 4 'icon': IconData, // Icono asociado con el certificado 5 'color': Color, // Color para la visualización 6 'description': String, // Breve descripción del certificado 7 'status': String, // Estado del certificado, e.g., 'complete', 'expiring', 'not_started', 'pending' 8 'expiry': String?, // Cadena ISO 8601 para la fecha de vencimiento (puede ser nula) 9 }

El siguiente archivo es: lib/screens/worker/worker_profile/level_up/leaderboard_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../leaderboard_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/worker_profile/level_up/leaderboard_screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _profiles
  • Propósito: Representa una lista de perfiles de trabajadores para la tabla de clasificación. Esto es esencialmente un mock de datos de WorkerProfile para fines de visualización.
  • Estructura de cada elemento Map<String, dynamic> (que representa la entrada de un trabajador en la tabla de clasificación):

1 { 2 'id': String, // Identificador único para el trabajador 3 'name': String, // Nombre visible del trabajador, e.g., 'Sarah Jenkins' 4 'photo_url': String?, // URL de la foto de perfil del trabajador (puede ser nula) 5 'xp': int, // Puntos de experiencia del trabajador 6 'level': String, // Nivel actual del trabajador, e.g., 'Krower III' 7 'user_id': String, // ID de usuario (correo electrónico en el mock), utilizado para identificar al usuario actual 8 }

El siguiente archivo es: lib/screens/worker/payments_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../worker/payments_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/payments_screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _recentPayments
  • Propósito: Representa una lista de registros de pagos recientes por turnos trabajados.
  • Estructura de cada elemento Map<String, dynamic> (que representa un solo registro de pago):
1     {
2       'date': String,       // Fecha del pago, e.g., 'Sat, Dec 6'
3       'title': String,      // Título del turno, e.g., 'Cook'
4       'location': String,   // Ubicación del turno
5       'address': String,    // Dirección completa de la ubicación del turno
6       'workedTime': String, // Rango de tiempo trabajado, e.g., '2:00 PM - 10:00 PM'
7       'amount': double,     // Cantidad de pago por el turno
8       'status': String,     // Estado del pago, e.g., 'paid'
9       'hours': int,         // Horas trabajadas en el turno

10 'rate': double, // Tarifa por hora del turno 11 }

El siguiente archivo es: lib/screens/worker/availability_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../availability_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/availability_screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _timeSlots
  • Propósito: Define los diferentes rangos horarios (mañana, tarde, noche) para los cuales un trabajador puede establecer su disponibilidad.
  • Estructura de cada elemento Map<String, dynamic> (que representa un solo rango horario):

1 { 2 'id': String, // Identificador único para el rango horario, e.g., 'morning' 3 'label': String, // Nombre visible, e.g., 'Morning' 4 'time': String, // Rango de tiempo, e.g., '4:00 AM - 12:00 PM' 5 'icon': IconData, // Icono asociado con el rango horario, e.g., LucideIcons.sunrise 6 'bg': Color, // Color de fondo para la visualización 7 'iconColor': Color, // Color del icono 8 }

El siguiente archivo es: lib/screens/worker/earnings_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../worker/earnings_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ He analizado lib/screens/worker/earnings_screen.dart.

Aquí está la estructura del List<Map<String, dynamic>> que contiene:

  • Nombre de la variable: _recentPayments
  • Propósito: Representa una lista de resúmenes de pagos recientes para el trabajador.
  • Estructura de cada elemento Map<String, dynamic> (que representa un solo resumen de pago):

1 { 2 'date': String, // Fecha del pago, e.g., 'Dec 15' 3 'amount': double, // Monto total pagado por este período 4 'shifts': int, // Número de turnos cubiertos por este pago 5 'status': String, // Estado del pago, e.g., 'paid' 6 }

El siguiente archivo es: lib/screens/worker/clock_in_screen.dart. ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile lib/.../worker/clock_in_screen.dart │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ ¡He completado la búsqueda! He encontrado y analizado todas las instancias de List<Map<String, dynamic>> en los archivos .dart dentro de tu proyecto.

Aquí tienes la lista consolidada, junto con su propósito y la estructura de los Map internos:


  1. lib/screens/auth/profile_setup_screen.dart
  • Variable: _steps
  • Propósito: Define los pasos del proceso de configuración del perfil.
  • Estructura de cada elemento:

1 { 2 'id': String, // Ejemplo: 'basic' 3 'title': String, // Ejemplo: 'Basic Info' 4 'icon': IconData // Ejemplo: LucideIcons.user 5 }


  1. lib/screens/worker/benefits_screen.dart
  • Variable: _benefitsData
  • Propósito: Lista de beneficios disponibles para el trabajador.
  • Estructura de cada elemento:
1     {
2       'id': String,
3       'title': String,
4       'current': int,
5       'total': int,
6       'color': Color,
7       'description': String,
8       'history': List<Map<String, dynamic>>, // <- Lista anidada
9       'requestLabel': String,

10 'notice': String?, 11 } * Estructura anidada history: 1 { 2 'date': String, 3 'status': String, 4 }


  1. lib/screens/worker/worker_profile/finances/time_card_screen.dart
  • Variable: _timesheets
  • Propósito: Lista de hojas de tiempo registradas para turnos trabajados.
  • Estructura de cada elemento:
1     {
2       'id': String,
3       'shift_id': String,
4       'date': String, // Formato ISO 8601
5       'actual_start': String,
6       'actual_end': String,
7       'total_hours': double,
8       'hourly_rate': double,
9       'total_pay': double,

10 'status': String, 11 'shift_title': String, 12 'client_name': String, 13 'location': String, 14 }


  1. lib/screens/worker/worker_profile/support/faqs_screen.dart
  • Variable: _faqData
  • Propósito: Lista categorizada de preguntas frecuentes.
  • Estructura de cada elemento (categoría):

1 { 2 'category': String, 3 'questions': List<Map<String, dynamic>>, // <- Lista anidada 4 } * Estructura anidada questions: 1 { 2 'q': String, // Pregunta 3 'a': String, // Respuesta 4 }


  1. lib/screens/worker/worker_profile/onboarding/emergency_contact_screen.dart
  • Variable: _contacts
  • Propósito: Lista de contactos de emergencia para el trabajador.
  • Estructura de cada elemento:

1 { 2 'name': String, 3 'phone': String, 4 'relationship': String, // Ejemplo: 'family', 'spouse', 'friend' 5 }


  1. lib/screens/worker/worker_profile/support/messages_screen.dart
  • Variable: _conversations
  • Propósito: Lista de conversaciones de chat.
  • Estructura de cada elemento (conversación):

1 { 2 'sender_id': String, 3 'sender_name': String, 4 'lastMessage': String, 5 'lastTime': DateTime, 6 'unread': int, 7 'messages': List<Map<String, dynamic>>, // <- Lista anidada 8 } * Estructura anidada messages:

1 { 2 'content': String, 3 'sender_id': String, 4 }


  1. lib/screens/worker/worker_profile/onboarding/attire_screen.dart
  • Variable: _attireOptions
  • Propósito: Lista de artículos de vestimenta que un trabajador podría necesitar o poseer.
  • Estructura de cada elemento: 1 { 2 'id': String, 3 'label': String, 4 'icon': IconData, 5 'imageUrl': String, 6 }

  1. lib/screens/worker/worker_profile/level_up/trainings_screen.dart
  • Variable: _courses
  • Propósito: Lista de cursos de capacitación disponibles.
  • Estructura de cada elemento:
1     {
2       'id': String,
3       'title': String,
4       'description': String,
5       'duration_minutes': int,
6       'xp_reward': int,
7       'thumbnail_url': String?,
8       'progress_percent': int,
9       'completed': bool,

10 }


  1. lib/screens/worker/worker_profile/compliance/documents_screen.dart
  • Variable: _requiredDocs
  • Propósito: Lista de documentos requeridos para el cumplimiento.
  • Estructura de cada elemento: 1 { 2 'id': String, 3 'name': String, 4 'description': String, 5 'status': String, // Ejemplo: 'verified', 'pending', 'missing' 6 }

  1. lib/screens/worker/worker_profile/finances/bank_account_screen.dart
  • Variable: _accounts
  • Propósito: Lista de cuentas bancarias vinculadas.
  • Estructura de cada elemento:

1 { 2 'id': int, 3 'bank': String, 4 'type': String, // Ejemplo: 'Checking', 'Savings' 5 'last4': String, 6 'isPrimary': bool, 7 }


  1. lib/screens/worker/worker_profile/compliance/tax_forms_screen.dart
  • Variable: _forms
  • Propósito: Lista de formularios de impuestos requeridos.
  • Estructura de cada elemento:

1 { 2 'id': String, 3 'title': String, 4 'subtitle': String, 5 'description': String, 6 'status': String, // Ejemplo: 'submitted', 'not_started', 'draft' 7 'icon': String, // Icono (emoji) 8 }


  1. lib/screens/worker/worker_profile/compliance/certificates_screen.dart
  • Variable: _certificates
  • Propósito: Lista de certificados del trabajador.
  • Estructura de cada elemento:

1 { 2 'id': String, 3 'name': String, 4 'icon': IconData, 5 'color': Color, 6 'description': String, 7 'status': String, // Ejemplo: 'complete', 'expiring', 'not_started' 8 'expiry': String?, // Formato ISO 8601, puede ser nulo 9 }


  1. lib/screens/worker/worker_profile/level_up/leaderboard_screen.dart
  • Variable: _profiles
  • Propósito: Lista de perfiles de trabajadores para la tabla de clasificación.
  • Estructura de cada elemento:

1 { 2 'id': String, 3 'name': String, 4 'photo_url': String?, 5 'xp': int, 6 'level': String, // Ejemplo: 'Krower III' 7 'user_id': String, 8 }


  1. lib/screens/worker/payments_screen.dart
  • Variable: _recentPayments
  • Propósito: Lista de registros de pagos recientes (detallados).
  • Estructura de cada elemento:
1     {
2       'date': String,       // Ejemplo: 'Sat, Dec 6'
3       'title': String,
4       'location': String,
5       'address': String,
6       'workedTime': String,
7       'amount': double,
8       'status': String,     // Ejemplo: 'paid'
9       'hours': int,

10 'rate': double, 11 }


  1. lib/screens/worker/availability_screen.dart
  • Variable: _timeSlots
  • Propósito: Define los rangos horarios (mañana, tarde, noche) para configurar la disponibilidad.
  • Estructura de cada elemento:

1 { 2 'id': String, 3 'label': String, 4 'time': String, 5 'icon': IconData, 6 'bg': Color, 7 'iconColor': Color, 8 }


  1. lib/screens/worker/earnings_screen.dart
  • Variable: _recentPayments
  • Propósito: Lista de resúmenes de pagos recientes (menos detallado que el de payments_screen.dart).
  • Estructura de cada elemento:

1 { 2 'date': String, // Ejemplo: 'Dec 15' 3 'amount': double, 4 'shifts': int, 5 'status': String, // Ejemplo: 'paid' 6 }


Esta lista detallada te da una visión completa de cómo se están manejando los datos en diferentes partes de la aplicación. Como te mencioné antes, la mayoría de estos son mocks locales y no clases formales. Auto (Gemini 2.5) /model