【问题标题】:How to get GridTile position in GridView flutter?如何在 GridView 中获取 GridTile 位置?
【发布时间】:2018-06-30 06:56:41
【问题描述】:

我正在使用 GridTile 在 GridView 中创建每个项目。每个项目都是从数据列表中动态创建的。我需要通过获取键或索引来找出单击了哪个项目。请各位大神推荐一个方法?

这是我的代码,

 new GridView.count(
                    shrinkWrap: true,
                    primary: false,
                    childAspectRatio: 2.0,
                    crossAxisCount: 3,
                    mainAxisSpacing: 10.0,
                    children: _kCategoryTiles.map((_FilterItemTile item) {
                      return new GridTile(
                        child: new Container(
                          alignment: Alignment.center,
                          decoration: new BoxDecoration(
                            shape: BoxShape.rectangle,
                            borderRadius: new BorderRadius.all(
                                new Radius.elliptical(10.0, 20.0)),
                            border: new Border.all(
                              color: const Color(0xFF33b17c),
                            ),
                          ),
                          margin: new EdgeInsets.all(10.0),
                          child: new Text(
                            item.itemName,
                            textAlign: TextAlign.center,
                            style: new TextStyle(
                              color: Colors.black,
                              fontSize: 12.0,
                              fontFamily: 'helvetica_neue_medium',
                              letterSpacing: 0.59,
                            ),
                          ),
                        ),
                      );
                    }).toList(),
                  )

提前致谢。

【问题讨论】:

标签: dart flutter flutter-layout


【解决方案1】:

您可以将 GridTile 包装在 FlatButton 中,从而为您提供 onPressed 属性。在那里你可以访问你的_FilterItemTile item:

return new GridView.count(
    shrinkWrap: true,
    primary: false,
    childAspectRatio: 2.0,
    crossAxisCount: 3,
    mainAxisSpacing: 10.0,
    children: _kCategoryTiles.map((_FilterItemTile item) {
        return new FlatButton(
    onPressed: () {
        // add code here
        print(item);
        someFunction(item);
    },
    child: new GridTile(
        child: new Container(
            alignment: Alignment.center,
            decoration: new BoxDecoration(
            shape: BoxShape.rectangle,
            borderRadius: new BorderRadius.all(
                new Radius.elliptical(10.0, 20.0)),
            border: new Border.all(
                color: const Color(0xFF33b17c),
            ),
            ),
            margin: new EdgeInsets.all(10.0),
            child: new Text(
            item.itemName,
            textAlign: TextAlign.center,
            style: new TextStyle(
                color: Colors.black,
                fontSize: 12.0,
                fontFamily: 'helvetica_neue_medium',
                letterSpacing: 0.59,
            ),
            ),
        ),
        );
        )
    }).toList(),
),

【讨论】:

  • 感谢您的帮助。但我想要项目位置或索引值。
  • 对不起,编辑错了。我在 GridTile 被 FlatButton 包裹的地方再次对其进行了编辑。现在您可以通过按下一个 GridTile 来访问该项目。
  • 位置是指索引值(在您的情况下为 _FilterItemTile 项)?只需使用item 将其包含在 onPressed 中即可。
  • 我添加了它。基本上就是yourFunction(item)
  • 它给出了项目,但我想要那个网格视图中的 gridTile 位置(一个整数值)。
猜你喜欢
  • 2021-03-09
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多