GestureDedector 的 onTap 事件不适用于 Sizedbox

Posted

技术标签:

【中文标题】GestureDedector 的 onTap 事件不适用于 Sizedbox【英文标题】:GestureDedector's onTap event not working for Sizedbox 【发布时间】:2021-11-03 14:17:20 【问题描述】:

我遇到了 GestureDedector 的 onTap 事件问题。 我也试过卡,但不工作。当我点击 sizedbox 时没有任何反应。

      GestureDetector(
                    onTap: () => GoToPage(),
                    child: SizedBox(
                      child: Card(
                        child: Center(
                            child: Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: Column(
                            children: <Widget>[
                              Image.asset(
                                "assets/png/icon2.png",
                                width: 64.0,
                              ),
                              ...

谢谢。

【问题讨论】:

@Nagual sizedbox 有效,*** 在提问时要求我缩短它。 SizedBox 属性:宽度:146.0,高度:170.0, 你在哪里测试它,网络或电话设备。在网络上,它工作正常。 在移动设备上无法正常工作。甚至 GestureDedector 的属性我都试过了 【参考方案1】:

默认情况下,带有不可见子项的 GestureDetector 会忽略触摸,此行为可以通过行为来控制。 https://flutter.dev/docs/development/ui/advanced/gestures

【讨论】:

【参考方案2】:

您需要指定 GestureDetector 行为

GestureDetector(
  behavior: HitTestBehavior.opaque,
  onTap: (),
),

【讨论】:

【参考方案3】:

尝试添加GestureDetector的行为属性

GestureDetector(
  behavior: HitTestBehavior.translucent,
  onTap: (),
),

【讨论】:

以上是关于GestureDedector 的 onTap 事件不适用于 Sizedbox的主要内容,如果未能解决你的问题,请参考以下文章

添加 if 语句后,颤振 onTap 错误 onTap 停止工作

无法将 onTap 字段传递给无状态小部件

如何在 GridView 中使用 onTap?

Flutter GestureDetector,onTap自动触发,如何?

容器的 Flutter onTap 方法

Flutter 中 DropDownMenu 按钮中的 OnTap 函数