忽略文本的onTap()事件->改用父行的onTap()事件

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

我有一个Row小部件。该行有一个Text作为子级(在这种情况下,它是SelectableText)。该行嵌入到InkWell小部件中,用于处理onTap()事件。除非我点击Text,否则此方法工作正常。在这种情况下,InkWell onTap()事件未引发。

InkWell(
  child: Row (
    children: <Widget> [
      SelectableText(...)
    ]
  ),
  onTap: () => doSth();
)

是否可以忽略Text事件的onTap()?我的解决方法是使用相同的代码向onTap()添加Text事件。但是,实际上,我想避免这种复制。

flutter events textfield
3个回答
0
投票

如@ NoobN3rd所建议,只需用AbsorbPointer包装您的子小部件。

当吸收为true时,此小部件通过终止自身的命中测试来防止其子树接收指针事件。它仍然在布局过程中占用空间,并像往常一样绘制其子级。

    AbsorbPointer(
   //child:your child widget
 )

0
投票

尝试一下:

GestureDetector(
  behavior: HitTestBehavior.opaque,
  onTap: () => doSth();
  child: Row(
    children: <Widget>[
      SelectableText(...),
    ],
  ),
),

0
投票

使用IngnorePointer

InkWell(
  child: Row (
    children: <Widget> [
      IgnorePointer(
        child: SelectableText(...)
     )
    ]
  ),
  onTap: () => doSth();
)
© www.soinside.com 2019 - 2024. All rights reserved.