Flutter

Jak označit text jako nadpis (Flutter)

Flutter nemá vlastní vizuální styl nadpisu jako HTML <h1><h6> — jde čistě o přístupnostní vlastnost, kterou textu přidáte přes Semantics. A tahle konkrétní vlastnost navíc nedávno prošla zásadní změnou, takže staré návody a ukázky kódu už neplatí.

1. Jak na to

Semantics(
  headingLevel: 1, // 1 = hlavní nadpis, 2 = podsekce, ... až 6
  child: Text('Nadpis sekce'),
)

Důležité: starší kód s Semantics(header: true, child: ...) byl donedávna správný postup, ale od Flutteru 3.47 (stabilní verze z 12. 8. 2026) je header: true na Androidu i iOS bez efektu — kód se nezhroutí, ale nadpis se čtečce obrazovky prostě neohlásí. Pokud váš projekt cílí na starší Flutter než 3.47, header: true tam ještě funguje; jinak použijte headingLevel.

headingLevel je int? a povolené hodnoty jsou null nebo 16 (mimo tento rozsah aplikace spadne na chybu už při sestavení stromu).

Proč to takhle je

  • headingLevel existuje, aby čtečka obrazovky rozeznala strukturu dokumentu (hlavní nadpis vs. podnadpis), a ne jen plochý seznam textů za sebou — díky tomu se dá stránkou/obrazovkou skákat po nadpisech.
  • Čísla úrovně reálně využije jen web (mapuje se na aria-level/<h1><h6>) a novější iOS (accessibilityHeadingLevel od iOS 13). Android zůstává v podstatě binární — pozná jen „je nadpis, nebo není", úroveň 1 vs. 3 mu nic neřekne.
  • header: true není označené jako zastaralé (žádné varování v editoru), takže je snadné narazit na starý příklad z tutoriálu nebo blogu, který na první pohled vypadá funkčně, ale na aktuálním Flutteru už nic nedělá.

Pravidla

  • WCAG 1.3.1 (Informace a vztahy) — strukturální informace (že jde o nadpis) musí být dostupná programově, ne jen vizuálně.
  • WCAG 2.4.6 (Nadpisy a popisky) — nadpisy popisují téma nebo účel obsahu, který uvozují.

Zdroje

Štítky

Komentáře

Zatím zde nejsou žádné komentáře. Buďte první, kdo napíše svůj názor.

Přidat komentář k „Jak označit text jako nadpis (Flutter)“