我们需要为使用屏幕阅读器的用户处理不同级别的用户体验。
只有在启用屏幕阅读器的情况下,我们才需要实现一些逻辑。
if(isScreenReaderOn){
logic A goes here
} else {
logic B goes here
}
但我无法在 Flutter 中找到一种方法来检查设备的屏幕阅读器是否打开。
我浏览了以下链接,但未能找到明确的解决方案。
他们似乎在内部使用它,但我无法清楚地意识到它适用于我的情况。
如果您能对此提供支持,我们将不胜感激。
最佳答案
我能够自己找到答案:)
这里是示例代码
void main(){
runApp(MaterialApp(
home: MyWidget(),
));
}
class MyWidget extends StatelessWidget {
Widget build(BuildContext context) {
// retrieve the mediaQuery data
final mediaQueryData = MediaQuery.of(context);
if (mediaQueryData.accessibleNavigation) {
return Text('Screen reader is on');
} else {
return Text('Screen reader is off');
}
}
}
谢谢 :)
更新:
我在启用放大和选择说话功能的情况下测试了代码。但输出没有发生任何变化。因为它起源于 [Window.AccessibilityFeatures] 的 accessibleNavigation 属性。它会导致是否有正在运行的可访问性服务正在改变设备的交互模型。我认为它只是在寻找屏幕阅读器。
关于flutter - 如何检查屏幕阅读器是否使用 Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54224069/