Flutter IgnorePointer & AbsorbPointer

2,113 阅读1分钟

如果您想禁用某个区域的触摸,或者换句话说,您想让触摸指针不起作用怎么办。在 Flutter 中,您可以使用 IgnorePointer 或AbsorbPointer,接下来我就会来介绍两者的区别。

  • 使用 IgnorePointer

    IgnorePointer的构造函数如下:

    const IgnorePointer({
    Key key,
    this.ignoring = true,
    this.ignoringSemantics, Widget child, }

属性:

  • bool ignoring: 命中测试是否忽视小部件

  • Widget child: The widget to be rendered.

也就是说如果ignoring为true的话,所有发生在widget点击事件都将失效。

使用方法

IgnorePointer(    ignoring: _ignoring,    child: MyWidget(),  )

使用AbsorbPointer

**构造函数:**

const AbsorbPointer({    Key key,    this.absorbing = true,    Widget child,    this.ignoringSemantics,  })

IgnorePointer和AbsorbPointer之间的区别

在上面的例子中,行为IgnorePointerAbsorbPointer外观相似。那么,这两个小部件之间有什么区别。下面的例子使差异显而易见。

现在,我们有一个Stack由两个位置完全相同的按钮组成的。按钮 2 位于按钮 1 上方。按钮 2 被包裹在 内IgnorePointer。单击按钮时,SnackBar将显示 a。

如果`ignoring`设置为`true`并且您单击按钮,您将看到`SnackBar`来自按钮 1。这意味着在按钮 2 上忽略指针,但在按钮 1 上检测到指针。

如果absorbing设置为true并且您单击按钮,则按钮 1 和按钮 2 都不会触发SnackBar. 这意味着指针被吸收而不是传递到下面的层AbsorbPointer

这就是两者的区别。

公众号地址