颤振:你如何使卡片可点击?

Jus*_*s10 20 material-design flutter

我只是有一个简单的卡片new Card(child: new Text('My cool card')),我希望能够点击它上面的任何地方运行一些功能,除了没有onPressed卡的方法.我可以在底部添加一个按钮,但这对于这种情况并不理想.

任何人都知道如何使整张卡可点击?

Rém*_*let 36

颤动使用组合物超过属性.将所需的小部件包装成可点击的小部件,以实现您的需求.

一些可点击小工具:GestureDetector,InkWell,InkResponse.

new GestureDetector(
  onTap: ...,
  child: new Card(...),
);
Run Code Online (Sandbox Code Playgroud)

  • @RémiRousselet 这很好用。但它没有表现出任何涟漪效应。我尝试将它包装在 `InkWell` 中,即使没有显示出涟漪效应。似乎我们需要像 [this](/sf/ask/3179723501/) 那样做更多的嵌套 (3认同)
  • @CopsOnRoad 为了产生连锁反应,您可能需要将 `Card` 的 `child` 包装在 `InkWell` 内。涟漪效应无法在您的情况下显示,因为它将位于“Card”后面。 (2认同)

Ale*_*Pad 10

您可以使用 Inkwell 并插入 splashColor,在用户单击时,它会在卡片上创建具有所选颜色的回弹效果。这主要用于材料设计。

return Card(
  color: item.completed ? Colors.white70 : Colors.white,
  elevation: 8,
  child: InkWell(
      splashColor: "Insert color when user tap on card",
      onTap: () async {

      },
    ),
);
Run Code Online (Sandbox Code Playgroud)


Jos*_*ush 9

Flutter提供了InkWell小部件。通过注册回调,您可以确定用户单击卡时发生的情况(称为“轻击”)。InkWell还实现了材料设计波纹效应

Card(
  child: new InkWell(
    onTap: () {
      print("tapped");
    },
    child: Container(
      width: 100.0,
      height: 100.0,
    ),
  ),
),
Run Code Online (Sandbox Code Playgroud)

  • @forresthopkinsa:这取决于您想要实现的目标。如果你想让卡片充满“墨水”,那么 InkWell 应该位于卡片内部。相反,如果 InkWell 包裹卡片,则卡片外部(但不在卡片内部)的区域(默认为矩形)将填充“墨水”。您甚至可以在卡片的内部和外部各有一个墨水池 - 两个区域都充满“墨水”。 (2认同)

Kal*_*dla 9

在 GestureDetector Widget 中包裹一张卡片,如下所示:

 GestureDetector(
    onTap: () {
      // To do
    },
    child: Card(
     
    ),
  ),
Run Code Online (Sandbox Code Playgroud)

另一种方式如下:

InkWell(
    onTap: () {
      // To do
    },
    child: Card(),
  ),
Run Code Online (Sandbox Code Playgroud)


mah*_*mnj 8

我想你也可以用墨水瓶除了GestureDetector只是包装卡内InkWell()的Widget

InkWell(
  onTap: (){ print("Card Clicked"); }
  child: new Card(),
);
Run Code Online (Sandbox Code Playgroud)

  • 卡片(子:InkWell())更好 (5认同)
  • 我必须将 InkWell 放入 Card 小部件中才能获得涟漪效果 (2认同)

jit*_*555 7

在 Flutter 中,InkWell 是一个响应触摸动作的材质部件。

InkWell(
    child: Card(......),
    onTap: () { 
        print("Click event on Container"); 
    },
);
Run Code Online (Sandbox Code Playgroud)

GestureDetector 是一个检测手势的小部件。

GestureDetector(
    onTap: () { 
        print("Click event on Container"); 
    },
    child: Card(.......),
)
Run Code Online (Sandbox Code Playgroud)

不同之处

InkWell 是一个材质小部件,每当收到触摸时它都会向您显示波纹效果。

GestureDetector 更加通用,不仅适用于触摸,还适用于其他手势。