【发布时间】:2019-12-07 22:31:31
【问题描述】:
是否可以在按下按钮时将辅助功能焦点(iOS 的 VoiceOver 和 Android 的 Talkback)移动到定义的小部件?
我已尝试在 Semantics package 中搜索,但找不到获取此信息的方法。
让屏幕阅读器从头开始重新启动语义树就足够了。
我有一个PageView,有 3 个页面和按钮,可以使用 PageController 向后/向前移动。当使用按钮更改时(调用_pageController.animateToPage),我想将焦点移动到页面的开头。
【问题讨论】:
-
你试过 FocusNode 吗?
FocusScope.of(context).requestFocus(_myFocusNode); -
我添加了有关小部件结构的详细信息,不幸的是我没有文本字段,所以我认为我不能将 FocusNode 设置为普通小部件。
-
有一个名为 Focus 的小部件,您可以在其中附加一个 FocusNode、一个子小部件和一些回调。我是否正确理解您希望屏幕阅读器在按下按钮时自动读取焦点更改为的内容?我确实尝试创建类似于您使用 Focus 小部件描述的内容,并且焦点似乎根据打印语句而改变,但是 Talkback 的突出显示仍然存在,除非事后手动按下其他位置,否则不会大声读出任何内容。如果需要,我可以附上代码(尚未发布,因为我不确定它的正确答案)。
-
我想要的是将对讲焦点从按钮更改为页面的开头(另一个小部件)。我尝试了您所描述的内容,但正如您所说,焦点没有改变。我正在寻找 Flutter 的原生 UIAccessibilityLayoutChangedNotification/AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED 的等效项?
标签: flutter accessibility voiceover talkback