flutter - 如何检查屏幕阅读器是否使用 Flutter

标签 flutter accessibility

我们需要为使用屏幕阅读器的用户处理不同级别的用户体验。

只有在启用屏幕阅读器的情况下,我们才需要实现一些逻辑。

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/

相关文章:

java - Android:以编程方式更改可访问性顺序

objective-c - 在 Swift/Objective-C 中监听窗口调整大小事件

android - 如何在辅助功能服务中的可 ScrollView 上方添加矩形?

android - 仅使用 Android 模块在 Android Studio 中打开 Flutter 项目

flutter - flutter希望在其子级上调用父 View 以刷新主视图

ios - 辅助功能标识符未保留在界面生成器中

javascript - NVDA 在动态更新后读取 aria-hidden 内容

flutter - 在 Flutter 应用程序中通过向后滑动手势关闭键盘

dart - 具有默认文本的 TextFormField

Flutter 搜索委托(delegate),在文本输入中设置一个值或加载上次搜索的值