我有一个 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,然后立即导航回主页。
我们升级到 Flutter 3.19 时遇到了同样的问题,但现在 Flutter 3.24.2 似乎已经修复了该问题。
但我很想知道您在升级之前是否找到了解决方案?