我正在开发一款针对视力障碍用户的flutter应用。在我的应用程序中,用户使用editbox搜索信息后,应用缺乏通知用户搜索已完成。
我希望通过将焦点转移到搜索结果上,以便屏幕阅读器(Talkback或VoiceOver)阅读它来实现此目标。例如,在Android上,我可以使用:
View.requestFocus();
我正在寻找一种在Flutter或自定义平台代码中执行相同操作的方法。
我正在开发一款针对视力障碍用户的flutter应用。在我的应用程序中,用户使用editbox搜索信息后,应用缺乏通知用户搜索已完成。
我希望通过将焦点转移到搜索结果上,以便屏幕阅读器(Talkback或VoiceOver)阅读它来实现此目标。例如,在Android上,我可以使用:
View.requestFocus();
我正在寻找一种在Flutter或自定义平台代码中执行相同操作的方法。
我想澄清一些误解。我已经在其他地方看到过Aawaz Gyawali的解决方案的变化。这是不起作用的。
Flutter有两种类型的焦点。第一种是“输入焦点”。这确定了当前具有焦点的表单字段,并且这就是FocusNode处理的内容。
第二种焦点是“可访问性焦点”。这是TalkBack / Voiceover提供的框。它与“输入焦点”完全分离。您可以随意更改输入焦点,但可访问性焦点将保持不变。
我们不能在Flutter中更改可访问性焦点,这是一个巨大的疏忽和创建可访问应用程序的主要障碍。
编辑 为了完整起见,我找到了一个丑陋的解决方法。
如果将焦点更改为表单字段(例如文本字段),则可访问性焦点也会更新。
在我的情况下,我正在使用一个几乎没有样式的FlatButton。显然,然后你必须使该按钮执行某些操作,但至少可以让你进入你想要去的领域。
非常Hacky,但鉴于其他选项不佳,这就是我目前拥有的东西。
FocusNode
来实现这个功能,可以在这里查看示例代码。