Flutter for web - RaisedButton 周围的 GestureDetector

Posted

技术标签:

【中文标题】Flutter for web - RaisedButton 周围的 GestureDetector【英文标题】:Flutter for web - GestureDetector around RaisedButton 【发布时间】:2020-06-05 16:22:37 【问题描述】:

上下文:https://dartpad.dev/c9689b40a5402e12538c726b5c0380ff

我有一个GestureDetector(具有一些特定的业务逻辑),它监听单击并有一个child 作为参数。

在特定位置,我希望这个child 小部件看起来像一个按钮。但是,使用真正的按钮小部件显然会跳过 GestureDetector 的onTap

起初我以为onTapCancel 会启动,但要让onTapCancel 触发小部件需要“长按”。

关于如何解决这个问题的任何建议? (在孩子周围使用IgnorePointer 是行不通的。)

【问题讨论】:

所以你想看看波纹/飞溅效果? 不仅如此。我想要一个按钮的行为,而不需要该按钮上的onPressed。我希望 onPressed 由父母触发。您可以在问题顶部的交互式示例中看到这一点。 在您的 GestureDetector 中,您有 onTap 功能,您可以在其中执行您的功能。所以像按钮一样显示,你需要有 Card() 或 Container() 并相应地设计。如果按下则设置一个标志并检查条件,然后显示或更改该手势检测器的行为 【参考方案1】:

AbsorbPointer

  Widget build(BuildContext context) 
    return GestureDetector(
        child: AbsorbPointer(child : child),
        onTap: () 
          print('tap');
          onTap();
        ,
        onTapCancel: () 
          print('tapCancel');
        );
  

【讨论】:

以上是关于Flutter for web - RaisedButton 周围的 GestureDetector的主要内容,如果未能解决你的问题,请参考以下文章

Flutter For Web实践

有啥方法可以在 Flutter for Web 中添加谷歌地图?

Flutter for web 编写新标签

无法运行 Dart 2 with / Angular for web 以及 Flutter for mobile 项目 - 计划共享代码

Flutter for Web:Android Chrome 底部的文本被截断

使用 Flutter for Web 和 Mobile 的卡片高度/宽度