Flutter:在 GridView 中选择卡片

Posted

技术标签:

【中文标题】Flutter:在 GridView 中选择卡片【英文标题】:Flutter: Select Card inside GridView 【发布时间】:2020-10-31 13:43:14 【问题描述】:

我有一个应用程序,它在 GridView 内的卡片中显示数据,如下所示:

GridView.count(
          crossAxisCount: 2,
          children: <Widget>[
            _customCard(
              imageUrl: image1, item: item1, price: price1, count: count1
            ),
            _customCard(
              imageUrl: image2, item: item2, price: price2, count: count2
            ),
            _customCard(
              imageUrl: image3, item: item3, price: price3, count: count3
            ),
            _customCard(
              imageUrl: image4, item: item4, price: price4, count: count4
            ),
          ],
        ),

我想在按下时根据它在列表中的索引来获取指定的卡片名称,就像我们在 ListView 中所做的那样。

 class item 
  final String name;
  final int count;
  final String imageUrl;
  final double price;

  item(this.name, this.imageUrl,  this.count, this.price);


List<item> tops = [
  new item(
      imageUrl: "tshirt.png",
      name: "T-shirt",
      count: 0,
      price: 0.50
  ),
  new item(
      imageUrl:   "shirt.png",
      name: "Shirt",
      count: 0,
      price: 0.80
  ),

有没有办法用 GridView 做到这一点,或者我应该尝试其他方法吗?

【问题讨论】:

【参考方案1】:

您可以使用Gridview.builder 并使用其index 从列表中获取相关对象:

return GridView.builder(
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
        physics: ScrollPhysics(),
        itemCount: _customCards.length,
        itemBuilder: (BuildContext context, int index)
         return Inkwell(child:_customCards(
          imageUrl: image[index], item: item[index], price: price[index], count: count[index]),
          onTap()
            print(tops[index]);
           
        ),
        
        );*

【讨论】:

谢谢它按我的意愿工作..感谢您的帮助

以上是关于Flutter:在 GridView 中选择卡片的主要内容,如果未能解决你的问题,请参考以下文章

自定义卡片形状 Flutter SDK

Flutter:根据所选类别在 GridView 内显示值

在 Flutter Listview 中选择卡片

带有标题的 Flutter GridView

Flutter - 保留不可见的gridview子项

flutter 系列之:flutter 中常用的 GridView layout 详解