Flutter 如何删除栅格视图生成的空白

Flutter 如何删除栅格视图生成的空白,flutter,dart,mobile,flutter-layout,Flutter,Dart,Mobile,Flutter Layout,我想为我的颤振应用程序应用分类选择。我是颤振的初学者。我已经尽了最大的努力来这里,但我不知道如何清除这些空白 在homescreen.dart的主体中,我编写了以下代码 Expanded( child: Padding( padding: const EdgeInsets.symmetric(horizontal: KDefaultPadding), child: GridView.builder( itemCount: produ

我想为我的颤振应用程序应用分类选择。我是颤振的初学者。我已经尽了最大的努力来这里,但我不知道如何清除这些空白

在homescreen.dart的主体中,我编写了以下代码

Expanded(
      child: Padding(
        padding: const EdgeInsets.symmetric(horizontal: KDefaultPadding),
        child: GridView.builder(
          itemCount: products.length,
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 2,
            childAspectRatio: 0.75,
            mainAxisSpacing: KDefaultPadding,
            crossAxisSpacing: KDefaultPadding,
          ),
          itemBuilder: (context, index) => ItemCard(
            product:
                products[index].tag == "chicken" ? products[index] : null,
            press: () => Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) => DetailScreen(
                  product: products[index],
                ),
              ),
            ),
          ),
        ),
      ),
    ),
在物品卡片上,我写了以下内容

    class ItemCard extends StatelessWidget {
  final Product product;
  final Function press;

  const ItemCard({
    Key key,
    this.product,
    this.press,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    if (product != null) {
      return GestureDetector(
        onTap: press,
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            Container(
              padding: EdgeInsets.all(KDefaultPadding),
              // height: 180,
              // width: 160,
              decoration: BoxDecoration(
                color: product.color,
                borderRadius: BorderRadius.circular(16),
              ),
              child: Hero(
                  tag: "${product.id}",
                  child: Image.asset(
                    product.image,
                  )),
            ),
            Padding(
              padding:
                  const EdgeInsets.symmetric(vertical: KDefaultPadding / 4),
              child: Text(
                product.title,
                style:
                    TextStyle(color: kTextColor, fontWeight: FontWeight.bold),
              ),
            ),
            Text(
              "$kCurrency${product.price}",
              style: TextStyle(
                  color: kTextLightColor, fontWeight: FontWeight.bold),
            )
          ],
        ),
      );
    } else {
      return Container();
    }
  }
class ItemCard扩展了无状态小部件{
最终产品;
最终功能压力机;
常量项目卡({
关键点,
这个产品,,
本报,
}):super(key:key);
@凌驾
小部件构建(构建上下文){
如果(产品!=null){
返回手势检测器(
onTap:新闻界,
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
容器(
填充:EdgeInsets.all(KDefaultPadding),
//身高:180,
//宽度:160,
装饰:盒子装饰(
颜色:product.color,
边界半径:边界半径。圆形(16),
),
孩子:英雄(
标记:“${product.id}”,
子:Image.asset(
产品形象,
)),
),
填充物(
衬垫:
常数边集对称(垂直:KDefaultPadding/4),
子:文本(
产品名称,
风格:
TextStyle(颜色:kTextColor,fontwweight:fontwweight.bold),
),
),
正文(
“$kCurrency${product.price}”,
样式:TextStyle(
颜色:kTextLightColor,fontWeight:fontWeight.bold),
)
],
),
);
}否则{
返回容器();
}
}
}

我得到的结果是这个

首字母是这个。。。


有人能帮我一下吗?

把这个
products.length
改成
products.where((product)=>product.tag=='chicken')。length
不把意外的产品放进GridView。

把这个
products.length
改成
products.where((product)=>product.tag=='chicken')).length
以避免将意外产品放入GridView。

这可能是一个容器,而不是空的空格,因为当产品为空时返回容器,试着在card.dart中的else语句中给容器涂上红色,然后告诉我。不,我想移除那个空容器,并且只有三个widgetsys。我明白你的意思,问题是你传递的是产品:产品[index]。标记==“鸡肉”?products[index]:null,指向card.dart,因此当产品为null时,您将呈现一个空容器,它是一个容器而不是一个空空间,您必须在将数组传递给GridBuilder之前对其进行过滤。我知道如何做。我不想听起来粗鲁或专横,但我知道这个概念,但很难实现。这可能是一个容器,而不是空的空间,因为您在产品为空时返回容器,试着在card.dart中的else语句中给容器涂上红色,然后告诉我。不,我想移除那个空容器,并且只有三个widgetsys。我明白你的意思,问题是你传递的是产品:产品[index]。标记==“鸡肉”?products[index]:null,指向card.dart,因此当产品为null时,您将呈现一个空容器,它是一个容器而不是一个空空间,您必须在将数组传递给GridBuilder之前对其进行过滤。我知道如何做。我不想听起来粗鲁或专横,但我知道这个概念,但很难实现它。