dart - GridView onTap 只在创建时调用

标签 dart flutter

我制作了一个带有子项的 GridView,每个子项都有一个 GestureDetector 和一个 onTap 方法集。但是只有在创建 View 时才会调用 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')
        )
    );
  }
}

最佳答案

你想要:

onTap: () { 打印(代码); },

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

关于dart - GridView onTap 只在创建时调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42741278/

相关文章:

flutter - 使用//忽略 : missing_return in an future fuction where we are using conditioning to return answer? 是个好主意吗

html - 如何在 Flutter 的 html 字符串中使用 css-property?

google-maps - 自定义 Flutter Google Map 中的中心位置按钮

firebase - 完成一个操作后如何向所有用户动态发送 FirebaseMessaging - Flutter?

android - Flutter - 用于 AdMob 支持的 Android list 中的语法

dart - “需要 1 个必需参数,但找到 0 个”错误

dart - Dart2js在元数据注释中将符号括起来

flutter 禁用整个屏幕上的触摸

dart - 如何使用History类处理浏览器历史记录

android - 当我使用根名称进行导航时,如何在 flutter 中创建全屏对话框?