Flutter onPressed Material

标签 flutter

我正在尝试为我使用 Flutter 创建的游戏实现 onPressed 函数。如果我使用 RaisedButton 然后 onPressed 工作,但因为我想要一个图像然后我必须使用 Material:

              child: Material(
                elevation: 4.0,
                onPressed: buttonsList[i].enabled
                    ? () => playGame(buttonsList[i])
                    : null,
                color: Colors.green,
                child: Image.asset(buttonsList[i].icon),
              ),

这给了我以下错误:

The parameter onPressed isn't defined.

整个方法构建:

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: new AppBar(
          title: new Text("Cat Attack"),
        ),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.start,
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: <Widget>[
            Expanded(
              child: GridView.builder(
                padding: const EdgeInsets.all(10.0),
                gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(
                    crossAxisCount: 4, // 4 columns of board buttons
                    childAspectRatio: 1.0,
                    crossAxisSpacing: 9.0,
                    mainAxisSpacing: 9.0),

                // Game board loop
                itemCount: buttonsList.length,
                itemBuilder: (context, i) => SizedBox(
                  width: 100.0,
                  height: 100.0,

                  child: Material(
                    elevation: 4.0,
                    onPressed: buttonsList[i].enabled
                        ? () => playGame(buttonsList[i])
                        : null,
                    color: Colors.green,
                    child: Image.asset(buttonsList[i].icon),

                  ),

                ),
              ),
            ),

            RaisedButton(
              child: new Text(
                "Reset",
                style: new TextStyle(color: Colors.white, fontSize: 20.0),
              ),
              color: Colors.red,
              padding: const EdgeInsets.all(20.0),
              onPressed: resetGame,
            )
          ],
        ));
  }

如何在 Material 上实现 onPressed 功能?

最佳答案

您可以在 Material 小部件中使用 GestureDetectorInkWell 小部件。

    Material(
         color: Colors.green,
        child: GestureDetector(
          onTap: buttonsList[i].enabled
                      ? () => playGame(buttonsList[i])
                      : null,
                       child: Image.asset(buttonsList[i].icon),
        ),
      )

更多信息在这里:

关于Flutter onPressed Material,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55435423/

相关文章:

android - Flutter:如何保持应用程序在后台运行

flutter - 如何在 flutter 中使用 url_launcher 捕获 canLaunch 异常?

flutter - 在条件下在列表中显示小部件的漂亮方法

flutter - Flutter-火焰与国际化?

flutter - SingleChildScrollView 下的 MainAxisAlignment 不起作用

flutter - 如何以编程方式关闭脚手架抽屉

flutter - 如何更改抽屉导航的工具栏颜色

performance - Flutter widget 应该在类中创建还是在 build() 函数中创建?

dart - Flutter - 对齐表格中的文本

flutter - 有没有办法在 flutter 中配置小部件的 z 轴?