Flutter语义可访问性问题[flutter]

scyqe7ek  于 6个月前  发布在  Flutter
关注(0)|答案(1)|浏览(47)

我试图添加一个标题,类似于HTML h1标签,到我的登录网页创建的Dart/Flutter。这是为了符合WCAG可访问性准则。为了实现这一点,我利用语义小部件,并设置头属性为true->

Widget _buildTitle(BuildContext context) {
    return SizedBox(
      height: 56,
      width: double.infinity,
      child: Semantics(
        header: true,
        label: context.loc.semanticsLogInText,
        child: Text(
          context.loc.semanticsLogInText,
          style: Theme.of(context).textTheme.headlineLarge,
          textAlign: TextAlign.left,
        ),
      ),
    );
  }

字符串
但仍然不工作屏幕阅读器(在我的Mac上的画外音)没有得到任何结构的页面。也测试了波和相同的结果->
x1c 0d1x的数据
Voice over MAC ->


ubby3x7f

ubby3x7f1#

经过广泛的研究,我发现这个问题很可能是因为WAVE专门搜索HTML头部元素(如,等),这些元素在网页结构中是标准的。然而,Flutter的小部件,包括Text和Semantics,在为Web编译时不会直接转换为这些HTML元素。为了解决这个问题,我设计了一种方法,使用universal_html包来处理HTML元素。->

void addHtmlHeading(BuildContext context) {
   final html.Element heading = html.HeadingElement.h1();
   heading.text = "my header";
   html.document.body?.children.add(heading);
  }

字符串
在那之后,波工具确定了我的标题和所有好!
x1c 0d1x的数据

相关问题