颤动 - 容器onPressed?

OhM*_*Mad 30 dart flutter

我有这个容器:

          new Container(
            width: 500.0,
            padding: new EdgeInsets.fromLTRB(20.0, 40.0, 20.0, 40.0),
            color: Colors.green,
            child: new Column(
              children: [
                new Text("Ableitungen"),
              ]
            ),
          ),
Run Code Online (Sandbox Code Playgroud)

当用户点击Container时,我想要一个onPressed方法被触发(例如,可以用IconButtons完成).如何使用容器实现此行为?

提前致谢

gue*_*523 76

我想你可以像这样使用GestureDetector小部件:

new GestureDetector(
        onTap: (){
          print("Container clicked");
        },
        child: new Container(
          width: 500.0,
          padding: new EdgeInsets.fromLTRB(20.0, 40.0, 20.0, 40.0),
          color: Colors.green,
          child: new Column(
              children: [
                new Text("Ableitungen"),
              ]
          ),
        )
    );
Run Code Online (Sandbox Code Playgroud)


Cop*_*oad 23

您不应该使用GestureDetector它,因为它不会显示任何波纹效果(这是Material design应用程序的核心部分),因此可以使用InkWell,这是基本示例。

Widget _buildContainer() {
  return Material(
    color: Colors.blue,
    child: InkWell(
      onTap: () => print("Container pressed"), // handle your onTap here
      child: Container(height: 200, width: 200),
    ),
  );
}
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明

  • 仅供参考:如果您在 InkWell 内使用容器,那么如果您还有“装饰”,则波纹可能不会出现。请参阅 /sf/ask/3602446081/。正如@CopsOnRoad 使用 Ink 所示,它支持几乎所有容器功能。 (2认同)

Kal*_*ani 17

如果你想要一个简单的点击事件,那么你可以通过GestureDetector

GestureDetector(
    onTap: (){
      print("Container clicked");
    },
    child: new Container(...)          
);
Run Code Online (Sandbox Code Playgroud)

如果您想要点击事件上的波纹动画,请使用InkWell

InkWell(
    onTap: (){
      print("Container clicked");
    },
    child: new Container(...)          
);
Run Code Online (Sandbox Code Playgroud)

  • 如何获得涟漪效应? (2认同)

Col*_*son 9

最简单的解决方案是将其包装成Containera GestureRecognizer,但考虑使用InkWell或者FlatButton如果您正在构建Material Design应用程序.触摸时,这些小部件将显示视觉飞溅响应.


jit*_*555 8

容器本身没有任何点击事件,所以有两种方法

  1. InkWell 小部件
  2. 手势检测器

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

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

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

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

区别

InkWell 是一个材质小部件,它可以在收到触摸时向您显示波纹效果。

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


use*_*714 5

标题

GestureDetectorInkWell

您可以使用两个小部件

1) 手势检测器

    GestureDetector(

        onTap: (){
          print("Container clicked");
        },
        child: new Container(child: ...)          
    );
Run Code Online (Sandbox Code Playgroud)

这个小部件,没有任何效果。

2) 墨水池

    InkWell(

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

这个小部件有动画效果。