flutter - 在 Flutter 中使用 GestureDetector 和 Button 可访问性有什么区别吗?
问题描述
在 Flutter 中,我们可以使用 GestureDetector onTap 或 Button 来捕获用户按下事件。在 HTML(div 与按钮)的情况下,它们之间的可访问性有什么区别吗?
此外,GestureDetector 是如何翻译成 Flutter Web 的?它是翻译成带有 onClick 处理程序或按钮的 div 吗?
解决方案
可访问性的差异
如果您仔细查看它们中的每一个,它们都由底层回调触发。
- onPressed 按钮
VoidCallback onPressed
当按钮被点击或以其他方式激活时调用。如果此回调和 onLongPress 为 null,则该按钮将被禁用。另请参阅:启用,如果按钮已启用,则为 true。
- 手势检测器的 onTap
GestureTapCallback onTap
发生带有主按钮的点击。 这会在点击手势获胜时触发。如果点击手势没有获胜,则改为调用 onTapCancel。
您会注意到没有太大区别,因为GestureTapCallback和VoidCallback的 typedef 等于 void Function();
用于相同目的。
Flutter web 中 onTap 和 onPressed 的区别
至于你的第二个问题,你可以查看我在flutter中构建的个人网站并自己检查源代码,我同时使用了 GestureDetector 和 Button,它们在 html 输出中转换为完全相同的role="button" 。
文档:
推荐阅读
- python - (Python) pyinstxtractor 不生成任何 .py 或 .pyc 文件 - 如何将空白文件转换为 .pyc?
- javascript - useEffect EventListener 问题 REACT HOOKS
- google-sheets - 条件加入 Google 表格
- javascript - 如何渲染动态 antd 图标组件?
- css - 如何解决公告栏造成的累积布局偏移?
- .htaccess - RewriteRules 将特定域 https 重定向到 http,其他域相反
- r - 部署 Shiny App (shinyapps.-io) 加载 Keras 模型
- r - 由两个单独的列分组的移动平均线
- dart - Dart 对象的默认 == 行为是什么?
- cakephp - 在 CakePhp 4 中,如何为多个字段指定唯一的约束验证器?