我对 Flutter 完全陌生,并发现了
InkWell
和 GestureDetector
。在我看来,它们几乎是一样的。官方文档没有提供它们之间的任何深入比较。
InkWell
和GestureDetector
有什么区别?什么时候用哪个?
其他答案完全正确。这是视觉表现。
我会尝试提及它们的功能差异。
GestureDetector
课程非常广泛。您可以检测用户与屏幕或使用它的小部件进行的每种类型的交互。它包括捏合、滑动、触摸以及自定义手势。
InkWell
需要检测的手势数量有限,但它为您提供了装饰小部件的方法。你可以装饰
颜色:
splashColor
、focusColor
、hoverColor
...
边框:
borderRadius
,customBorder
,...
希望这对你有帮助!
InkWell 将孩子的整个区域作为热点,轻松接收用户交互。但是,GestureDetector 不会将子项的整个区域设为热点,就像填充区域不是热点一样。因此,使用 GestureDetector 通常会导致用户交互失败。
对我来说,它们之间的重要区别是:InkWell 必须有一个 Material 小部件作为祖先,而 GestureDetector 不需要一个 Material 小部件作为祖先。
手势检测器
Gesture Detector
用于检测用户在应用程序上的手势。 It is a non-visual widget
。在手势检测器内部,放置了另一个小部件,手势检测器将捕获 all these events (gestures)
并相应地执行任务。
墨水井
InkWell 是 Material 小部件的一个矩形区域,由
responds to touch event
组成。Material 小部件负责触摸事件发生时显示的墨迹效果。材质是指绘制墨水反应的区域
简单来说,如果您想要涟漪效果,请使用 displaying a clipped splash.
或需要更多控件,请使用
InkWell
InkWell 另一方面,让用户通过使用键盘按 Tab 键来获得对小部件的焦点,这是键盘用户在选择小部件之前在屏幕上的小部件之间进行切换的方式。