为什么在GridView中上下限之间的距离会不同?

时间:2019-06-26 04:35:23

标签: gridview flutter

我的应用程序结果如下:

http://go.microsoft.com/fwlink/?LinkId=691126&fixForIE=.exe

为什么图像与上方边界之间的距离与文本与下方边界之间的距离不同?使两个极限距离相等的解决方案是什么?而不是通过使用边距或填充进行硬编码,因为如果设备在不同的设备上运行,则空间必须有所不同。有任何小部件可以处理吗?

这是我获取清单的代码。

Widget _cardCategory(AsyncSnapshot<CatlistResult> snapshot) {
    var numItems = snapshot == null ? 0 : snapshot.data.catlist.sublist(0, 7).length;
    return Container(
      transform: Matrix4.translationValues(0.0, -20.0, 0.0),
      child: Card(
        elevation: 5.0,
        shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(5))),
        margin: EdgeInsets.only(left: 16.0, right: 16.0),
        child: numItems == 0 ? Container() : GridView.builder(
          shrinkWrap: true,
          primary: false, //kill scrollable
          itemCount: numItems + 1, //must keep using +1
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 4),
          itemBuilder: (BuildContext context, int index) {
            String imagePath;
            String itemText;
            if (index == numItems) {
              imagePath = 'assets/images/main/cat_999.png';
              itemText = 'More';
            } else {
              imagePath = 'assets/images/main/cat_${snapshot.data.catlist[index].a}.png';
              itemText = snapshot.data.catlist[index].c;
            }
            return GestureDetector(
              child: Card(
                elevation: 0.0,
                child: Column(
                  children: <Widget>[
                    Expanded(
                      child: Image.asset(imagePath, fit: BoxFit.cover),
                    ),
                    Text(
                      itemText,
                      style: TextStyle(fontSize: 10),
                    ),
                  ],
                ),
              ),
//            onTap: () {
//              nextScreen17(index);
//            }
            );
          },
        ),
      ),
    );
  }

0 个答案:

没有答案