Skip to main content

provide-progress-indicator-semantics

effort: 2m
has IDE fix
pro+

Warns when a progress indicator does not have a semantics label.

Standard Flutter loading indicators (CircularProgressIndicator, LinearProgressIndicator, RefreshIndicator) communicate progress or active background processing visually.

Without a semanticsLabel, the indicator is completely excluded from the semantics tree on iOS, rendering the loading state completely invisible to VoiceOver.

Example

❌ Bad:

// LINT: Provide a non-empty semantics label to progress indicators.
CircularProgressIndicator();

// LINT: Provide a non-empty semantics label to progress indicators.
LinearProgressIndicator();

✅ Good:

CircularProgressIndicator(semanticsLabel: 'some label');
LinearProgressIndicator(semanticsLabel: 'some label');

Additional Resources