当使用ensureSemantics构建默认树时,Flutter TextSpan有不正确的<href>

问题描述 投票:0回答:1

我有一个 Flutter 应用程序,它通过调用 SemanticsBinding.instance.ensureSemantics(); 构建语义树;启动时。

完成此操作后,带有 TapGestureRecognizers 的 TextSpans 将在语义树中以 href='#' 呈现(请参见屏幕截图)。当用户点击这些元素时,会调用 TapGestureRecognizer onTap 方法,但应用程序也会错误地导航到“#”。我不知道如何改变这种行为。我宁愿不排除这些元素的语义,因为我希望它们可以通过自动化测试找到。非常感谢帮助。

示例文本跨度

Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    mainAxisSize: MainAxisSize.min,
    children: [
       Flexible(
          child: RichText(
                 text: TextSpan(
                  style: AppTextStyle.body.copyWith(color: AppColor.gray3),
                  children: [
                      TextSpan(text: subtitle),
                      TextSpan(recognizer: TapGestureRecognizer()
                                  ..onTap = () => launch(learnMoreUrl),
                               text: 'Learn More',
                               style: AppTextStyle.body.copyWith(
                               color: Colors.blue,
                               decoration: TextDecoration.underline,
                              ),
                  ]),
       ),
       // etc

                       

上面的代码将启动一个新选项卡并导航到 learnMoreUrl,然后立即导航回主页。

语义树中的元素: TextSpan DOM

flutter accessibility href
1个回答
0
投票

我们升级到 Flutter 3.19 时遇到了同样的问题,但现在 Flutter 3.24.2 似乎已经修复了该问题。

但我很想知道您在升级之前是否找到了解决方案?

© www.soinside.com 2019 - 2024. All rights reserved.