Check Accessibility
Accessibility is a release gate, not a polish task.
Checklist
| Area | Check |
|---|---|
| Labels | Buttons, inputs, images, and custom controls expose useful labels |
| Tap targets | Interactive controls are large enough for touch |
| Contrast | Text and controls meet contrast expectations |
| Scaling | Text scale and layout do not break |
| Screen readers | TalkBack and VoiceOver smoke tests cover core flows |
| Errors | Forms explain validation and recovery |
| Color | Meaning is not color-only |
| Web semantics | Web builds expose inspectable semantics where applicable |
Widget Guideline Tests
Use Flutter accessibility guideline tests for widget-level checks:
testWidgets('home meets accessibility guidelines', (tester) async {
await tester.pumpWidget(const ExpenseNotesApp());
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
await expectLater(tester, meetsGuideline(iOSTapTargetGuideline));
await expectLater(tester, meetsGuideline(labeledTapTargetGuideline));
await expectLater(tester, meetsGuideline(textContrastGuideline));
});
Pair widget checks with platform tools: Android Accessibility Scanner, iOS Accessibility Inspector, browser accessibility inspection, and manual screen-reader use.
Gotcha: A widget guideline test is not a full accessibility audit. It catches common issues, then real devices and assistive tech catch the rest.