GridView onTap仅在创建期间调用

时间:2017-03-11 22:12:38

标签: dart flutter

我制作了一个带有子节点的GridView,每个子节点都设置了GestureDetectoronTap方法。但只有在创建视图时才调用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')
        )
    );
  }
}

1 个答案:

答案 0 :(得分:6)

你想:

onTap: () { print(code); },

你正在做的是调用print,然后保存print的返回值(这将是一个null)作为onTap处理程序,它实际上禁用了onTap处理程序。如果您在日志中看到任何内容,那么它将从您实际构建时开始,而不是在您点击时。