Skip to content

NakedButton: no way to announce a loading state (live region) #92

Description

@leoafarias

Problem

Remix's RemixButton / RemixIconButton previously wrapped NakedButton in their own Semantics(liveRegion: loading, ...) node so screen readers announced entering the loading state. The visual-only-over-Naked pass removed that wrapper — correctly, because it republished the accessible name on a second node — but NakedButton offers no replacement, so entering loading is now silent.

What's needed

A way for a consumer to mark the button's own Semantics node as a live region (or otherwise announce a state change) without wrapping it in a second node. Options:

  1. NakedButton.semanticLiveRegion: bool forwarded to the existing single Semantics node (simplest; mirrors semanticHint from feat: add semantic adapter APIs for visual-layer consumers #91).
  2. A more general announcement hook, if a bool on one widget is too narrow.

Context

  • The single-node contract is tested in naked_button_semantics_test.dart ("exactly one button node"); any fix must keep that invariant.
  • Remix 1.0.0-beta.4 documents the lost announcement as a BREAKING change pending this API.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions