我正在使用Semantics来调整我的应用程序的可访问性,并希望读取电话号码(例如:Text("950874123"))一对一,而不是“百万,千…”。有什么办法吗?
Semantics
Text("950874123")
58wvjzkj1#
我看到这个问题已经问了一段时间了,但我遇到了同样的问题。我在这里添加我的解决方案来帮助下一个人。我在这个页面的帮助下得到了解决方案:https://medium.com/theotherdev-s/mastering-flutter-semantics-672440bc8bc8基本上,我的解决方案是使用Semantics标签(我可以控制)并使用ExcludeSemantics来排除我正在阅读的文本。在标签中,我将所有内容划分为一个数组,并将其转换为字符串。这使得屏幕阅读器将所有内容视为单个数字。这里有一个例子
Semantics( label: numberString.split("").toString(), child: ExcludeSemantics( excluding: true, child: Text(numberString), ) )
下面是代码的样子:
Semantics( child: Text( viewModel.confirmationId, semanticsLabel:numberString.split("").toString(), ) )
(此外,父“语义”小部件可能不需要。标签将直接与文本小部件一起使用)
zaqlnxep2#
我在显示信用卡的最后4位数字时遇到了类似的问题。我的解决方案:
TextSpan( text: ' ending in ${paymentMethod.last4}', semanticsLabel: 'ending in ${(paymentMethod.last4 ?? '').characters.join(',').toString()}', style: Theme.of(context).textTheme.bodyLarge, ),
2条答案
按热度按时间58wvjzkj1#
我看到这个问题已经问了一段时间了,但我遇到了同样的问题。我在这里添加我的解决方案来帮助下一个人。
我在这个页面的帮助下得到了解决方案:https://medium.com/theotherdev-s/mastering-flutter-semantics-672440bc8bc8
基本上,我的解决方案是使用Semantics标签(我可以控制)并使用ExcludeSemantics来排除我正在阅读的文本。在标签中,我将所有内容划分为一个数组,并将其转换为字符串。这使得屏幕阅读器将所有内容视为单个数字。
这里有一个例子
下面是代码的样子:
(此外,父“语义”小部件可能不需要。标签将直接与文本小部件一起使用)
zaqlnxep2#
我在显示信用卡的最后4位数字时遇到了类似的问题。我的解决方案: