595 lines
17 KiB
Markdown
595 lines
17 KiB
Markdown
# 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:**
|
|
```dart
|
|
{
|
|
'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):**
|
|
```dart
|
|
{
|
|
'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:**
|
|
```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<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:**
|
|
```dart
|
|
{
|
|
'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`:**
|
|
```dart
|
|
{
|
|
'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:**
|
|
```dart
|
|
{
|
|
'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:**
|
|
```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<Map<String, dynamic>> _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<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:**
|
|
```dart
|
|
{
|
|
'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:**
|
|
```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<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:**
|
|
```dart
|
|
{
|
|
'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:**
|
|
```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<Map<String, dynamic>> _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<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:**
|
|
```dart
|
|
{
|
|
'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):**
|
|
```dart
|
|
{
|
|
'category': String,
|
|
'questions': List<Map<String, dynamic>>, // <- 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<Map<String, dynamic>> _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<Map<String, dynamic>>, // <- Lista anidada
|
|
}
|
|
```
|
|
* **Estructura anidada de `messages`:**
|
|
```dart
|
|
{
|
|
'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:**
|
|
```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<Map<String, dynamic>> _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<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:**
|
|
```dart
|
|
{
|
|
'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:**
|
|
```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<Map<String, dynamic>> _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<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:**
|
|
```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<String, dynamic> _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<String, dynamic> _profile`
|
|
* **Propósito:** Almacena un subconjunto de datos del perfil relevantes para la universidad.
|
|
* **Estructura:**
|
|
```dart
|
|
{
|
|
'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:**
|
|
```dart
|
|
{
|
|
'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:**
|
|
```dart
|
|
{
|
|
'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:**
|
|
```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<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:**
|
|
```dart
|
|
{
|
|
'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:**
|
|
```dart
|
|
{
|
|
'date': DateTime,
|
|
'start': String,
|
|
'end': String,
|
|
'hours': String,
|
|
}
|
|
```
|