Skip to content

Commit 1dc765e

Browse files
committed
Semantic Focus Configuration and Enterprise Settings
1 parent 04b4f00 commit 1dc765e

File tree

1 file changed

+46
-2
lines changed

1 file changed

+46
-2
lines changed

docs/ff-concepts/localization-accessibility/accessibility.md

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@ Here are some key accessibility features you can use:
2424

2525
## Semantic Label
2626

27-
You can use **Semantic Labels** to provide custom descriptions, hints, or to emphasize the importance of specific parts of the widget tree. This ensures that screen reader users receive clear and meaningful information about each widget more effectively.
27+
**Semantic Labels** enhance your app’s accessibility and SEO by providing meaningful context about widgets for screen readers and search engines. These descriptions are especially helpful for users relying on assistive technologies.
2828

2929
For example, in an e-commerce app, you can add a semantic label to an '*Add to Bag*' button with a message like '*Add the selected item to cart*', which helps users better understand the button's action.
3030

31+
You can also dynamically set semantic labels using variables or expressions. This allows the label to change based on the app context, so screen readers announce exactly what’s on the screen instead of generic terms like "image" or "button." For example, a product image can read out the product name (e.g., "Red Running Shoes" pulled from Firestore) instead of just saying "image."
32+
3133
To add a semantic label for any widget, select the widget, move to the properties panel (right side), tap the document icon inside the **Accessibility & Semantic Label** section, add the message, and click **Save**.
3234

3335

@@ -37,7 +39,7 @@ To add a semantic label for any widget, select the widget, move to the propertie
3739
height: 0,
3840
width: '100%'}}>
3941
<iframe
40-
src="https://demo.arcade.software/m6KHHlhnbq0NJxHqWH88?embed&show_copy_link=true"
42+
src="https://demo.arcade.software/B3acoMrirCvsKl69tLH6?embed&show_copy_link=true"
4143
title=""
4244
style={{
4345
position: 'absolute',
@@ -71,6 +73,48 @@ After you add semantic labels, enable **TalkBack** on Android or **VoiceOver** o
7173

7274
Learn more about [enabling screen reader on your device](https://docs.flutter.dev/ui/accessibility-and-internationalization/accessibility#screen-readers).
7375

76+
### Focus Configuration
77+
78+
**Focus Configuration** helps improve keyboard and remote-control navigation in your app—especially important for web, desktop, TV, and kiosk apps. It controls how users move through widgets using the <kbd>Tab</kbd> key or other navigation inputs (like arrow keys or D-pad on TV or remote).
79+
80+
You can control the Focus Configuration using the following properties:
81+
82+
- **Wrap in Focus Traversal Group**: It places a widget (and all its children) in a dedicated group so focus cycles within that region before moving on. For example, if you have a login form with two fields: Email and Password. When you enable this option in the login form, pressing <kbd>Tab</kbd> will cycle only between them (and not jump to unrelated parts of the screen).
83+
- **Focus Traversal Order**: This sets the exact sequence in which widgets receive focus using numeric values (e.g., 1, 2, etc.). For example, In a sign‑up form, set `Name = 1`, `Email = 2`, and `Password = 3` so pressing <kbd>Tab</kbd> moves logically down the form rather than following the raw widget tree.
84+
85+
Using both the properties you can create structured keyboard navigation for any complex layouts.
86+
87+
:::warning
88+
89+
While you can assign a value for the **Focus Traversal Order** of any widget, it won’t take effect unless you enable **Wrap in Focus Traversal Group** on the current widget or one of its parent widgets.
90+
91+
The **Focus Traversal Group** defines a context or scope for focus traversal, and **Focus Traversal Order** only applies within that group. Without it, there's no defined order for the traversal logic to follow.
92+
93+
:::
94+
95+
### Advanced Semantic Settings (Enterprise Only)
96+
97+
These settings help make your app more accessible by giving you better control over how screen readers interpret and describe your UI.
98+
99+
:::info
100+
101+
These settings are only available to **Enterprise** users.
102+
103+
:::
104+
105+
Here’s what each option does:
106+
107+
- **Is Container**: Indicates the widget acts as a grouping for other semantic widgets.
108+
- **Is Image**: Tells screen readers the widget represents an image.
109+
- **Is Button**: Declares the widget behaves like a button.
110+
- **Is Header**: Identifies a widget as a heading for better navigation.
111+
- **Explicit Child Nodes**: Forces semantics to include all child nodes, even if normally ignored.
112+
- **Exclude Semantics**: Prevents screen readers from announcing this widget.
113+
- **Is Live Region**: Tells assistive tech that the widget’s content may change dynamically and should be re-announced.
114+
- **Hint Text**: Provides an additional hint for users (e.g., "Double tap to open").
115+
- **Tooltip Text**: Displays helpful text on long press or hover.
116+
- **Ordinal Sort Key**: Controls the order in which widgets are accessed by screen readers.
117+
74118
## Keyboard Navigation
75119

76120
You can use the [On Shortcut Press](../../resources/ui/pages/page-lifecycle.md#on-shortcut-press-action-trigger) action trigger to bind keyboard shortcuts to specific actions. This makes it easier for users with disabilities to navigate your app, especially in web and desktop environments.

0 commit comments

Comments
 (0)