Flutter:InkWell 与 GestureDetector:有什么区别?

问题描述 投票:0回答:8

我对 Flutter 完全陌生,并发现了

InkWell
GestureDetector
。在我看来,它们几乎是一样的。官方文档没有提供它们之间的任何深入比较。

  1. InkWell
    GestureDetector
    有什么区别?

  2. 什么时候用哪个?

flutter flutter-layout
8个回答
155
投票

差异:

  1. 它们都提供了许多常见的功能,如

    onTap
    onLongPress
    等。主要区别是
    GestureDetector
    提供了更多控件,如拖动等。另一方面,它不包括波纹效果点击,而
    InkWell
    则包含.

  2. 您可以根据您的需要使用其中任何一个,您想要波纹效果与

    InkWell
    搭配,需要更多控件与
    GestureDetector
    搭配,甚至将两者结合起来。


波纹效果(使用

InkWell
):

InkWell(
  onTap: () {},
  child: Ink(
    width: 200,
    height: 200,
    color: Colors.blue,
  ),
)


37
投票

视觉差异

其他答案完全正确。这是视觉表现。


27
投票

我会尝试提及它们的功能差异。

GestureDetector
课程非常广泛。您可以检测用户与屏幕或使用它的小部件进行的每种类型的交互。它包括捏合、滑动、触摸以及自定义手势。

InkWell
需要检测的手势数量有限,但它为您提供了装饰小部件的方法。你可以装饰

颜色:

 splashColor
focusColor
hoverColor
...

边框:

borderRadius
customBorder
,...

希望这对你有帮助!


10
投票

InkWell 将孩子的整个区域作为热点,轻松接收用户交互。但是,GestureDetector 不会将子项的整个区域设为热点,就像填充区域不是热点一样。因此,使用 GestureDetector 通常会导致用户交互失败。


4
投票

对我来说,它们之间的重要区别是:InkWell 必须有一个 Material 小部件作为祖先,而 GestureDetector 不需要一个 Material 小部件作为祖先。


3
投票

手势检测器

Gesture Detector
用于检测用户在应用程序上的手势。
It is a non-visual widget
。在手势检测器内部,放置了另一个小部件,手势检测器将捕获
all these events (gestures)
并相应地执行任务。

墨水井

InkWell 是 Material 小部件的一个矩形区域,由

responds to touch event
组成。Material 小部件负责触摸事件发生时显示的墨迹效果。材质是指绘制墨水反应的区域

简单来说,如果您想要涟漪效果,请使用
displaying a clipped splash.

或需要更多控件,请使用

InkWell

    


0
投票


0
投票

InkWell 另一方面,让用户通过使用键盘按 Tab 键来获得对小部件的焦点,这是键盘用户在选择小部件之前在屏幕上的小部件之间进行切换的方式。

© www.soinside.com 2019 - 2024. All rights reserved.