我有一个Row
小部件。该行有一个Text
作为子级(在这种情况下,它是SelectableText
)。该行嵌入到InkWell
小部件中,用于处理onTap()
事件。除非我点击Text
,否则此方法工作正常。在这种情况下,InkWell
onTap()
事件未引发。
InkWell(
child: Row (
children: <Widget> [
SelectableText(...)
]
),
onTap: () => doSth();
)
是否可以忽略Text
事件的onTap()
?我的解决方法是使用相同的代码向onTap()
添加Text
事件。但是,实际上,我想避免这种复制。
如@ NoobN3rd所建议,只需用AbsorbPointer包装您的子小部件。
当吸收为true时,此小部件通过终止自身的命中测试来防止其子树接收指针事件。它仍然在布局过程中占用空间,并像往常一样绘制其子级。
AbsorbPointer(
//child:your child widget
)
尝试一下:
GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () => doSth();
child: Row(
children: <Widget>[
SelectableText(...),
],
),
),
InkWell(
child: Row (
children: <Widget> [
IgnorePointer(
child: SelectableText(...)
)
]
),
onTap: () => doSth();
)