我创建了一个带有子节点的GridView,每个子节点都有一个GestureDetector和一个onTap方法集.但只有在创建视图时才调用onTap事件,而不是在项目被点击时调用.我在这做错了什么?
class MyGridView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Column(
children: <Widget>[
new Expanded(
child: new GridView.count(
crossAxisCount: 2,
children: [
new GridItem(0),
new GridItem(1)
]
)
)
]
);
}
}
class GridItem extends StatelessWidget {
final int code;
GridItem(this.code);
@override
Widget build(BuildContext context) {
return new GestureDetector(
onTap: print(code),
child: new Container(
height: 48.0,
child: new Text('$code')
)
);
}
}
Run Code Online (Sandbox Code Playgroud)
你要:
onTap: () { print(code); },
你正在做的是调用print,然后保存print的返回值(这将是一个null)作为onTap处理程序,它实际上禁用了onTap处理程序.如果您在日志中看到任何内容,那么它将从您实际构建时开始,而不是在您点击时.
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |