傻瓜用墨水瓶

时间:2018-10-24 16:48:53

标签: animation dart flutter

(...还有假人,我是我自己)

我在这里做错了什么? 我没有看到任何动画, 我试图更改容器/墨水瓶的顺序 因为我看到某个地方会引起一些问题, 但是我被卡住了。有人可以帮忙吗?

  class CardButton extends StatelessWidget {
  final String input;
  CardButton({this.input});

  Widget build(BuildContext context) {
    return Container(
      color: Colors.grey[100],
      width: 50.0,
      height: 50.0,
      alignment: Alignment.center,
      child: Material(
        child: InkWell(
          splashColor: Colors.amber,
          onTap: draw(),
          child: Text(input),
        ),
      ),
    );
  }
}

draw() {
  //todo
}

预先感谢

[编辑25/10]

我尝试了一些建议的解决方案, 但是这样做的话,这个“嵌套”的小部件会给我一个错误,

在下面使用“ CardButton”的地方编写小部件:

   class CardGrid extends StatelessWidget {
  final List<String> cardList = [
    'A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'];

  @override
  Widget build(BuildContext context) {
    return Container(
      width: 300.0,
      child: Column(
        children: <Widget>[
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              CardButton(input: cardList[0]),
              CardButton(input: cardList[1]),
              CardButton(input: cardList[2])
            ],
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              CardButton(input: cardList[3]),
              CardButton(input: cardList[4]),
              CardButton(input: cardList[5])
            ],
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              CardButton(input: cardList[6]),
              CardButton(input: cardList[7]),
              CardButton(input: cardList[8])
            ],
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              CardButton(input: cardList[9]),
              CardButton(input: cardList[10]),
              CardButton(input: cardList[11]),
              CardButton(input: cardList[12])
            ],
          ),
        ],
      ),
    );
  }
}

我要在此处添加应用的屏幕截图,第一个是我的原始代码, 第二个(带有错误)是“建议的”解决方案

original code modified code

1 个答案:

答案 0 :(得分:0)

您需要在不使用大括号的情况下传递onTap函数:

child: InkWell(
  splashColor: Colors.amber,
  onTap: draw, // don't use braces here (except your function returns
               // a reference to the actual onTap function.                      
  child: Text(input),
),

请注意,在当前布局中,仅内部Text元素具有动画效果。如果您希望InkWell覆盖整个按钮区域,则必须将小部件树重新排序为:

材料>千瓦>容器>文本

  Widget build(BuildContext context) {
    return Material(
      color: Colors.grey[100],
      child: InkWell(
        splashColor: Colors.amber,
        onTap: draw,
        child: Container(
          width: 100.0,
          height: 100.0,
          alignment: Alignment.center,
          child: Text(input),
        ),
      ),
    );
  }