(...还有假人,我是我自己)
我在这里做错了什么? 我没有看到任何动画, 我试图更改容器/墨水瓶的顺序 因为我看到某个地方会引起一些问题, 但是我被卡住了。有人可以帮忙吗?
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])
],
),
],
),
);
}
}
我要在此处添加应用的屏幕截图,第一个是我的原始代码, 第二个(带有错误)是“建议的”解决方案
答案 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),
),
),
);
}