包含卡片的 GridView 无法正确计算高度

Ada*_*ams 5 dart flutter

我有一个应用程序使用 aGridView来尝试布置一些Cards。相关代码看起来有点像这样

body: new GridView.count(
  crossAxisCount: 2,
  children: [new Card(
    child: new Column(
      mainAxisSize: MainAxisSize.min,
      children: <Widget>[
        const ListTile(
          leading: const Text("0", style: const TextStyle(
              fontWeight: FontWeight.bold, fontSize: 24.0)),
          title: const Text('Some Heading'),
          subtitle: const Text('My Subtitle'),
        ),
        new ButtonTheme
            .bar( // make buttons use the appropriate styles for cards
          child: new ButtonBar(
            children: <Widget>[
              new FlatButton(
                child: const Text('CALL TO ACTION'),
                onPressed: () {
                  /* ... */
                },
              ),
            ],
          ),
        ),
      ],
    ),
  ),
  // same card repeated
  ],
),
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不能很好地呈现:

渲染

卡片太高,它们应该在“CALL TO ACTION”按钮下方结束。我该如何解决这个问题,并使网格行自动尊重内容的高度?

Col*_*son 7

您的问题是瓷砖的GridView.count默认纵横比为1.0(即正方形),听起来您希望您的瓷砖比这更短。

快速解决方法是将 硬编码为childAspectRatio您喜欢的数字。一种更细致入微的方法是实现SliverGridDelegate描述您想要和使用的布局的GridView.custom。你也可以只做一个ListView2 元素Row小部件而不使用GridView

  • 这是一个基本要求。我想知道为什么它需要如此复杂以至于 GridView.count(...) 无法考虑它。 (10认同)