Check Accessibility

Accessibility is a release gate, not a polish task.

Checklist

AreaCheck
LabelsButtons, inputs, images, and custom controls expose useful labels
Tap targetsInteractive controls are large enough for touch
ContrastText and controls meet contrast expectations
ScalingText scale and layout do not break
Screen readersTalkBack and VoiceOver smoke tests cover core flows
ErrorsForms explain validation and recovery
ColorMeaning is not color-only
Web semanticsWeb 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.