如果您想禁用某个区域的触摸,或者换句话说,您想让触摸指针不起作用怎么办。在 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之间的区别
在上面的例子中,行为IgnorePointer和AbsorbPointer外观相似。那么,这两个小部件之间有什么区别。下面的例子使差异显而易见。
现在,我们有一个Stack由两个位置完全相同的按钮组成的。按钮 2 位于按钮 1 上方。按钮 2 被包裹在 内IgnorePointer。单击按钮时,SnackBar将显示 a。
如果`ignoring`设置为`true`并且您单击按钮,您将看到`SnackBar`来自按钮 1。这意味着在按钮 2 上忽略指针,但在按钮 1 上检测到指针。
如果absorbing设置为true并且您单击按钮,则按钮 1 和按钮 2 都不会触发SnackBar. 这意味着指针被吸收而不是传递到下面的层AbsorbPointer。
这就是两者的区别。
公众号地址