Activity Registration Bottom Sheet
Component Detail
Description
The primary modal entry point for activity logging, implemented as a bottom-sheet wizard container. Hosts all wizard steps in sequence and manages the visual progression from activity type selection through to confirmation, ensuring the flow feels like a check-in rather than a form.
activity-registration-bottom-sheet
Summaries
The Activity Registration Bottom Sheet is the central interaction surface through which users log their physical activities — the core value-generating action in the application. Designed to feel like a quick check-in rather than a data entry form, its wizard-based bottom-sheet format reduces cognitive load and increases completion rates, directly impacting the volume and accuracy of activity data captured. Higher-quality activity logging drives better personalized insights for users, which is a key differentiator for retention and engagement. Investing in the polish and reliability of this component has a direct, measurable effect on user satisfaction and the product's core health-tracking value proposition.
This is a medium-complexity UI component with six direct dependencies — the four wizard step components (activity-type-step, date-step, duration-step, notes-step), the confirmation view, and the activity-registration-cubit state manager. All dependencies must be completed and stable before this component can be fully integrated and tested end-to-end, making it a coordination-sensitive item on the schedule. Development effort includes implementing animated step transitions, progress indication, state retention on partial dismiss, and the confirmation success state. QA scope spans the full wizard flow on multiple device sizes, animation performance, and edge cases such as mid-flow interruptions.
Allocate regression time whenever any dependent step component is modified.
This component acts as the orchestrating shell for the multi-step activity registration wizard, rendered as a Material bottom sheet. It consumes the `activity-registration-cubit` for all state transitions and listens to Cubit-emitted events to drive step progression, dismiss behavior, and the post-save confirmation view rendering. The `onStepChanged(int stepIndex)` callback drives the `buildStepIndicator(int current, int total)` animated progress UI. Each wizard step is mounted lazily within the sheet's scrollable body, with `onRegistrationComplete(ActivityRecord record)` delegating the completed record upstream.
State should be retained in the Cubit rather than widget-local variables to support mid-flow interruption recovery. Animated transitions between steps should use Flutter's built-in `AnimatedSwitcher` or `PageView` with custom curves to maintain the check-in feel described in the UX spec.
Responsibilities
- Render and manage the multi-step bottom-sheet wizard shell
- Handle step transitions with animated progress indication
- Surface the strong visual confirmation state after successful save
- Dismiss or retain state based on Cubit events
Interfaces
show(BuildContext context)
onStepChanged(int stepIndex)
onRegistrationComplete(ActivityRecord record)
onDismissed()
buildStepIndicator(int current, int total)
Relationships
Dependencies (6)
Components this component depends on