以编程方式移动可访问性焦点

Lor*_*eto 7 accessibility voiceover talkback flutter

按下按钮时,是否可以将可访问性焦点(iOS的VoiceOver和Android的Talkback)移至已定义的小部件?

我曾尝试在语义包中进行搜索,但找不到找到这种方法的方法。

使屏幕阅读器从头开始重新启动语义树就足够了。

我有PageView3个页面和一个按钮,可以使用来后退/前进PageController。我想使用按钮(调用_pageController.animateToPage)更改焦点时将焦点移到页面的开头。

TWL*_*TWL 5

简而言之,不,目前没有方法允许您通过代码移动辅助功能焦点。

参考/sf/answers/1993676681/中提到的免责声明作为一些背景(尽管 Android 仍然允许我们这样做..)

免责声明:强制将活动负载的焦点放在顶部栏以外的任何地方(好吧,几乎永远不应该说总是),但实际上,不要这样做。这违反了 WCAG 2.0 的各种规定,包括分别关于可预测导航和上下文变化的 3.2.1 和 3.2.3。通过这样做,您实际上可能会使您的应用程序更加难以访问。

http://www.w3.org/TR/WCAG20/#consistency-behavior

Dart 团队目前坚定地支持该规则,因此添加此功能并不是优先考虑的事情。

如果您确实希望通知用户现在可以看到不同的页面,则可以使用SemanticsService.announce()在执行某些操作后通知用户。例如,将其设置为onPageChanged

onPageChanged: (int page) {
  // announce new page
}
Run Code Online (Sandbox Code Playgroud)