Dart GridView onTap仅在创建期间调用
我给孩子们做了一个GridView,每个孩子都有一个Dart GridView onTap仅在创建期间调用,dart,flutter,Dart,Flutter,我给孩子们做了一个GridView,每个孩子都有一个GestureDetector和一个onTap方法集。但onTap事件仅在创建视图时调用,而不是在点击项目时调用。我做错了什么 class MyGridView extends StatelessWidget { @override Widget build(BuildContext context) { return new Column( children: <Widget>[
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')
)
);
}
}
MyGridView类扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回新列(
儿童:[
新扩展(
子项:新建GridView.count(
交叉轴计数:2,
儿童:[
新项目(0),
新议程项目(1)
]
)
)
]
);
}
}
类GridItem扩展了无状态小部件{
最终整数码;
GridItem(此代码);
@凌驾
小部件构建(构建上下文){
返回新的手势检测器(
onTap:打印(代码),
子容器:新容器(
身高:48.0,
子项:新文本(“$code”)
)
);
}
}
您需要:
onTap:(){打印(代码);},
您要做的是调用print,然后将print的返回值(将为null)保存为onTap处理程序,这实际上禁用了onTap处理程序。如果您在日志中看到任何内容,它将是从您实际执行构建时开始的,而不是在您点击时。您想要:
onTap:(){打印(代码);},
您要做的是调用print,然后将print的返回值(将为null)保存为onTap处理程序,这实际上禁用了onTap处理程序。如果您在日志中看到任何内容,它将是从您实际执行构建时开始的,而不是在您点击时