web-dev-qa-db-ja.com

プログラムでアクセシビリティフォーカスを移動する

ボタンを押したときに、ユーザー補助機能のフォーカス(iOSの場合はVoiceOver、Androidの場合はTalkback)を定義済みのウィジェットに移動できますか?

セマンティクスパッケージ を検索してみましたが、これを取得する方法が見つかりません。

スクリーンリーダーに最初からセマンティクスツリーを再起動させるだけでも十分です。

PageViewを使用して前後に移動するための3つのページとボタンを備えたPageControllerがあります。 (_pageController.animateToPageを呼び出す)ボタンを使用して変更すると、ページの先頭にフォーカスを移動したいと思います。

11
LorenzOliveto

現在、Flutterでこれを行う方法はありません。入力フォーカスとアクセシビリティフォーカスは2つの異なるものです。多くの人がこれを示唆しているようです:

FocusScope.of(context).requestFocus(_myFocusNode);

問題は、これが入力フォーカスのみを変更することです。 TalkBackとVoiceoverによって提供される緑/青/黒のボックスであるアクセシビリティフォーカスは変更されません。

そのため、printステートメントでフォーカスを確認できますが、ボックスは移動していません。

現在のところ、Flutterでユーザー補助機能のフォーカスを変更する方法はありません。これは、本当にアクセスしやすいアプリを作成するための大きな監視と大きな障害です。

[〜#〜] edit [〜#〜]完全を期すために、これに対する醜い回避策を見つけました。

フォーカスをテキストフィールドなどのフォームフィールドに変更すると、アクセシビリティフォーカスも更新されます。

私の場合、スタイリングがほとんど付いていないFlatButtonを使用しています。明らかに、あなたはそのボタンdoを何かにする必要がありますが、少なくともあなたがなりたい場所の近くにあなたを連れて行きます。

ハッキー?確かに、しかしより良いオプションの代わりに、これは私が現在得ているものです。

0
ragingprog