首页 > 解决方案 > 在 Flutter 中使用 GestureDetector 和 Button 可访问性有什么区别吗?

问题描述

在 Flutter 中,我们可以使用 GestureDetector onTap 或 Button 来捕获用户按下事件。在 HTML(div 与按钮)的情况下,它们之间的可访问性有什么区别吗?

此外,GestureDetector 是如何翻译成 Flutter Web 的?它是翻译成带有 onClick 处理程序或按钮的 div 吗?

标签: flutterflutter-web

解决方案


可访问性的差异

如果您仔细查看它们中的每一个,它们都由底层回调触发。

  • onPressed 按钮

VoidCallback onPressed
按钮被点击或以其他方式激活时调用。如果此回调和 onLongPress 为 null,则该按钮将被禁用。另请参阅:启用,如果按钮已启用,则为 true。

  • 手势检测器的 onTap

GestureTapCallback onTap
发生带有主按钮的点击。 这会在点击手势获胜时触发。如果点击手势没有获胜,则改为调用 onTapCancel。

您会注意到没有太大区别,因为GestureTapCallbackVoidCallback的 typedef 等于 void Function();用于相同目的。


Flutter web 中 onTap 和 onPressed 的区别

至于你的第二个问题,你可以查看我在flutter中构建的个人网站并自己检查源代码,我同时使用了 GestureDetector 和 Button,它们在 html 输出中转换为完全相同的role="button" 。


文档:


推荐阅读