如何使用 Flutter 检查屏幕阅读器是否打开

Cru*_*ver 7 accessibility flutter

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

仅当屏幕阅读器启用时,我们才需要实现一些逻辑。

if(isScreenReaderOn){
    logic A goes here
} else {
    logic B goes here
}
Run Code Online (Sandbox Code Playgroud)

但我无法在 Flutter 中找到一种方法来检查设备的屏幕阅读器是否打开。

我浏览了以下链接,但无法找到明确的解决方案。

他们似乎在内部使用它,但我无法清楚地意识到它是否适用于我的案例。

如果您能对此提供支持,我们将不胜感激。

Cru*_*ver 6

这是示例代码

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');
    }
  }

}

Run Code Online (Sandbox Code Playgroud)

更新:

我测试了启用放大和选择朗读功能的代码..但输出没有发生变化。因为它起源于[Window.AccessibilityFeatures]的accessibleNavigation属性。它会导致是否存在正在运行的可访问性服务正在改变设备的交互模型。我认为它只是在寻找屏幕阅读器。