Bulk Participant List Widget
Component Detail
Description
Scrollable list widget displaying peer mentors selected for a bulk registration. Each row shows the mentor's name, a duplicate-conflict badge if applicable, and a remove button.
bulk-participant-list
Summaries
The Bulk Participant List Widget directly supports coordinator productivity by enabling efficient management of multiple peer mentors in a single registration session. By surfacing duplicate conflicts inline—before submission—this component prevents erroneous records from entering the system, reducing data correction overhead and protecting the integrity of participation reporting. Clean, actionable participant management translates to faster program administration, fewer support escalations, and higher coordinator satisfaction, all of which contribute to lower operational costs and a more reliable audit trail for compliance and funding purposes.
This is a low-complexity mobile UI widget with no external dependencies, making it a straightforward deliverable with minimal integration risk. Development effort is primarily focused on list rendering, conflict badge display, and remove-action callbacks. Testing requirements include empty-state rendering, duplicate badge visibility, and remove interaction correctness. Since it has no service dependencies, it can be developed and tested in isolation using mock participant data.
It should be scheduled early in the sprint as a foundational UI building block that other bulk-registration screens depend on for visual consistency and interaction patterns.
Implemented as a stateless Flutter widget accepting a `List
Use `ListView.builder` for performance with large lists. The `BulkParticipant` model must carry the peer-mentor entity reference and conflict resolution status.
Responsibilities
- Render selected participants with duplicate status indicators
- Allow individual participants to be removed from the batch
- Show empty-state call to action when no participants have been added
Interfaces
build(BuildContext context, List<BulkParticipant> participants)
onRemoveParticipant(String mentorId)
onAddMoreTapped()