Skip to content
Boring Doc
DeprecatedMedium impactOfficial migration guidesince 3.38.0landed 3.37.0-0.0.pre

Deprecate SemanticsProperties.focusable and SemanticsConfiguration.isFocusable

Framework · Official source

The `SemanticsProperties.focusable` and `SemanticsConfiguration.isFocusable` parameters were deprecated in favor of the `SemanticsProperties.focused` and `SemanticsConfiguration.isFocused` parameters.

Original behavior

The `SemanticsConfiguration.isFocusable` property is a boolean that indicates whether the semantics node can have input focus. `SemanticsConfiguration.isFocused` is a boolean that indicates if the semantics node has input focus.

New behavior

The `SemanticsConfiguration.isFocusable` property is deprecated in favor of `SemanticsConfiguration.isFocused`. This property is a nullable boolean; setting it to `true` or `false` automatically sets `isFocusable` to `true`, and setting it to `null` sets `isFocusable` to `false`.

Who is affected
Code that still calls the deprecated API; it keeps working until removal but produces analyzer warnings. Code that uses SemanticsProperties.focusable, SemanticsConfiguration.isFocusable, SemanticsProperties.focused and related APIs.
Practical impact
Warnings now; removal in a future release. Plan the migration but no immediate break.
What action should I take?
Follow the official migration guide below, update affected call sites, run `dart fix --apply` where a fix is available, then run your tests.

Before and after (from the official guide)

dart+0−1
Before
1 void describeSemanticsConfiguration(SemanticsConfiguration config) {
2− config.isFocusable = true;
3 config.isFocused = true;
4 }
After
1 void describeSemanticsConfiguration(SemanticsConfiguration config) {
 
2 config.isFocused = true;
3 }
Raw before / after
void describeSemanticsConfiguration(SemanticsConfiguration config) {
  config.isFocusable = true;
  config.isFocused = true;
}
void describeSemanticsConfiguration(SemanticsConfiguration config) {
  config.isFocused = true;
}
Official migration guide (excerpt, © The Flutter Authors, CC BY 3.0)

Replace SemanticsConfiguration.isFocusable with SemanticsConfiguration.isFocused.

Example 1: Setting isFocused to true automatically sets isFocusable to true

Code before migration:

void describeSemanticsConfiguration(SemanticsConfiguration config) {
  config.isFocusable = true;
  config.isFocused = true;
}

Code after migration:

void describeSemanticsConfiguration(SemanticsConfiguration config) {
  config.isFocused = true;
}

Example 2: Setting isFocused to null automatically sets isFocusable to false

Code before migration:

void describeSemanticsConfiguration(SemanticsConfiguration config) {
  config.isFocusable = false;
  config.isFocused = false;
}

Code after migration:

void describeSemanticsConfiguration(SemanticsConfiguration config) {
  config.isFocused = null;
}
Migration assistantAI-generated · grounded in cited sources
AI explanations are not configured
Set AI_PROVIDER (for example to openai-compatible with a local Ollama or LM Studio endpoint) to enable grounded explanations. Everything else on this page works without an AI provider.
Official migration guide·Verified classification (90%)

Listed in the official breaking-changes index; title states deprecation.

An official announcement or migration guide documents an intended behaviour or API change. A verified source change (git diff) shows code changed but does not by itself prove a public API is breaking. AI interpretations are labelled and never used to classify a change.

Source commit
b3045439b7c0
Source last updated
Oct 21, 2026
Last synchronized
Oct 21, 2026
Publication status
published
Publication history
  • Oct 21, 2026, 8:31 PM: new → published (ingestion) — Backed by an official breaking-change/migration guide.
AI explanationAI-generated · grounded in cited sources
AI explanations are not configured
Set AI_PROVIDER (for example to openai-compatible with a local Ollama or LM Studio endpoint) to enable grounded explanations. Everything else on this page works without an AI provider.
Was this useful?