Screen Overview
TheAddTaskScreen is a comprehensive task management interface that allows users to view, create, edit, and delete tasks within a specific team. It also provides team member management functionality.
Location: lib/ui/screens/add_task_screen.dart
Purpose
The AddTaskScreen provides:- Display of team information and members
- Task list for the current user
- Task creation with detailed properties
- Task editing and status updates
- Task deletion with confirmation
- Team member management and search
Constructor
Team data containing:
id: Team document IDname: Team namemembers: List of member user IDscolor: Team color (optional)
State Management
State Variables
List of tasks assigned to the current user in this team. Each task contains:
id: Task document IDname: Task titledescription: Task descriptionstartDate: DateTime for task startendDate: DateTime for task endstatus: Task status (“No Iniciado”, “En desarrollo”, “Finalizado”)
List of team members with:
id: Member user IDname: Member namephotoUrl: Member profile photo URL
List of selected member IDs for task assignment.
Search results when adding new members.
Flag indicating whether member search is active.
Firebase Services
- FirebaseFirestore (
_firestore): Database operations for tasks, teams, and users - FirebaseAuth (
_auth): Authentication to get current user - Logger (
logger): Global logger instance for debugging
Key Functionality
Task Operations
Fetching Tasks
add_task_screen.dart:40.
Query conditions:
teamIdequals the current team’s IDresponsibleIdequals the current user’s ID
Adding Tasks
AddTaskWidget dialog for creating new tasks. Located at add_task_screen.dart:93.
Process:
- Shows modal dialog with task creation form
- Passes team data and team members
- Refreshes task list on completion
Updating Tasks
add_task_screen.dart:113.
Editable fields:
- Task title
- Description
- Start date (date picker)
- End date (date picker)
- Status (3 options)
No Iniciado
Red background when selected
En desarrollo
Orange background when selected
Finalizado
Green background when selected
Deleting Tasks
add_task_screen.dart:393.
add_task_screen.dart:405.
Dialog features:
- Trash icon in circular avatar
- Warning message about permanent deletion
- Aceptar/Cancelar buttons
Team Member Operations
Fetching Team Members
add_task_screen.dart:68.
Process:
- Gets team document from Firestore
- Extracts member IDs array
- Fetches user details for each member
- Updates
teamMembersstate
Adding Members
AddMemberDialog for searching and adding team members. Located at add_task_screen.dart:475.
add_task_screen.dart:491.
Viewing Assigned Members
add_task_screen.dart:572.
UI Components
App Bar
Custom app bar with:- Large back button (yellow chevron, #FFEE93, 45px)
- No title
add_task_screen.dart:665-677.
Team Header
Members List
- Member avatar (NetworkImage or placeholder)
- Member name
add_task_screen.dart:707-724.
Tasks List
- Task name (title)
- Task description (subtitle)
- Edit button (pencil icon)
- Delete button (trash icon in pink circle)
- Divider between tasks
add_task_screen.dart:739-791.
Floating Action Buttons
Two FABs positioned at center-bottom:Add Member
Opens member search dialogIcon:
Icons.person_addAdd Task
Opens task creation dialogIcon:
Icons.add- Black background
- White icon
- Circular shape (100px border radius)
add_task_screen.dart:794-824.
Dialogs
Task Creation Dialog
Implemented inAddTaskWidget (separate widget file). Contains:
- Task name input
- Description input
- Member selection
- Start/end date pickers
- Status selection
Task Edit Dialog
CustomDialog widget with rounded corners (20px). Located at add_task_screen.dart:124-388.
Form fields:
- Título - TextField with gray background (#F0EEEE)
- Descripción - TextField with gray background
- Fecha de inicio - Date picker with calendar icon
- Fecha de fin - Date picker with calendar icon
- Estado - Three status buttons
- Actualizar (green #C8E2B3): Saves changes to Firestore
- Cancelar (gray #C6C6C6): Closes dialog without saving
Delete Confirmation Dialog
- Circular trash icon avatar (#FF9393)
- Title: “¿Desea eliminar la tarea?”
- Warning: “Recuerda que la tarea eliminada no se podrá recuperar.”
- Aceptar/Cancelar buttons
add_task_screen.dart:406-473.
Add Member Dialog
Implemented as separateAddMemberDialog stateful widget. Located at add_task_screen.dart:829-987.
Features:
- Green circular icon (#E5F4DD background, #7FC47F icon)
- Search field with real-time Firestore query
- Results list with name and email
- Aceptar/Cancelar buttons
- Searches users by name
- Uses
isGreaterThanOrEqualToandisLessThanOrEqualTofor prefix matching - Updates
searchResultsstate
Date Formatting
Usesintl package for date formatting:
Code Structure
Main Widget
- AddTaskScreen (StatefulWidget): Widget definition with team parameter
- AddTaskScreenState (State): State management and business logic
Helper Widget
- AddMemberDialog (StatefulWidget): Separate widget for member search
- AddMemberDialogState (State): Search state management
Method Organization
- Initialization:
initState(), fetching methods - Task CRUD:
_fetchTasks(),_addTask(),_updateTask(),_deleteTask() - Member CRUD:
_fetchTeamMembers(),_addMember(),_addMemberToTeam() - UI helpers:
showAssignedMembers(),_showAssignedMembersDialog(),_showDeleteTaskWarning() - Build methods:
build()
Layout Structure
Error Handling
All async operations include try-catch blocks with logging:Widget Lifecycle
Navigation
Incoming: FromTaskScreen when user taps “Ver” on a team card
Outgoing: Back to TaskScreen via back button or navigation pop
Performance Considerations
Tasks are filtered by
responsibleId to show only tasks assigned to the current user, reducing query size and improving load times.