Navigate the Entire App Using a Screen Reader
Every widget in the application — including AppButton, AppTextField, navigation bars, cards, dialogs, and list items — must expose meaningful semantic labels, hints, and values via Flutter's Semantics API. The Accessible Widget Library wraps all reusable components with properly configured Semantics nodes. All interactive elements must be reachable via sequential focus traversal in a logical reading order, and all dynamic content changes (loading states, validation errors, success confirmations) must be announced via live regions. Minimum tap target size of 44×44 points must be enforced throughout.
User Story
Acceptance Criteria
- Given VoiceOver is enabled on iOS, when a user navigates to any screen, then all interactive elements are announced with a meaningful label and action hint (e.g., 'Register Activity, button, double-tap to activate')
- Given TalkBack is enabled on Android, when a user swipes through the activity registration wizard, then each step's fields and controls are read in logical top-to-bottom order with no skipped elements
- Given JAWS is active on a web fallback view, when a user focuses a form field, then the field label, current value, and any validation error are announced correctly
- Given a loading spinner appears after submitting a form, when the loading completes and the success state is shown, then VoiceOver announces the outcome without requiring the user to navigate to it
- Given the bottom navigation bar is focused, when a user swipes between tabs, then each tab is announced with its name and current selection state (e.g., 'Home, tab, 1 of 5, selected')
- Given any interactive element, when measured, then its tap target is at minimum 44×44 logical pixels
- Given a modal dialog is opened, when VoiceOver focus enters the dialog, then focus is trapped within the dialog until it is dismissed
Business Value
Screen reader support is legally mandated under the Norwegian likestillings- og diskrimineringsloven and WCAG 2.2 AA requirements. For Norges Blindeforbund, whose peer mentors are visually impaired, this is the single most critical accessibility requirement — without it the app is entirely unusable for its primary user base. Delivering full screen reader compatibility removes a legal compliance risk for all partner organizations and makes the product viable for a user segment that has been systematically excluded by existing digital tools.
Components
- Accessible Widget Library ui
- Semantic Label Service service