如何使 InkWell `onLongPress()` 覆盖其内部 TextField 上的点击?

Joh*_*ohn 4 dart flutter

我有一个带有回调TextField的内部。问题是,尽管事实上,即使长按,我也会看到 上的连锁反应,但在长按时间过去后, 不会运行。它只会让我编辑文本。当按下 的底部时,一切运行正常。InkWellonLongPress()TextFieldInkWellonLongPress()Card

简而言之:点击后我想开始TextField编辑。长按时,我想触发onLongPress(),而不是TextField,即使我按下它。

我该怎么做呢?谢谢。

InkWell(
  onLongPress: () {
    // do stuff
  }
  child: ListTile(
    title: TextField(),
  ),
),
Run Code Online (Sandbox Code Playgroud)

截屏

Bac*_*ach 6

您可以使用AbsorbPointer小部件来忽略TextField手势识别器:

InkWell(
    onLongPress: () {
      print('onLongPress');
    },
    child: AbsorbPointer(
      child: ListTile(
        title: TextField(),
      ),
    ),
  )
Run Code Online (Sandbox Code Playgroud)

TextField要在单击时仍然启用编辑,您可以使用FocusNode如下所示:

InkWell(
                onLongPress: () {
                  print('onLongPress');
                },
                onTap: () => node.requestFocus(),
                child: AbsorbPointer(
                  child: ListTile(
                    title: TextField(
                      focusNode: node,
                      controller: textController,
                    ),
                  ),
                ),
              )
Run Code Online (Sandbox Code Playgroud)