Flutter GridView.builder 正在生成不需要的额外空间

标签 flutter dart

我正在尝试显示一行按钮。由于按钮的数量取决于列表中元素的数量,因此我必须使用 GridView.builder 来动态创建适量的按钮。不幸的是,GridView.builder 似乎占用了很多不必要的空间。有人知道这里出了什么问题吗?

body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            // Dice buttons
            Flexible(
                child: GridView.builder(
                    itemCount: dices.length,
                    gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(
                        crossAxisCount: dices.length,
                    ),
                    itemBuilder: (BuildContext context, int index) {
                      return new Row(
                          mainAxisAlignment: MainAxisAlignment.center,
                          children: <Widget>[
                            ButtonTheme(
                              minWidth: 50.0,
                              height: 50.0,
                              child: RaisedButton(
                                child: Text(
                                  dices[index].toString(),
                                  style: TextStyle(
                                    fontSize: 20,
                                    color: Colors.white,
                                  ),
                                ),
                                color: usedDices[index] || !expectNum
                                    ? Colors.grey
                                    : Colors.black,
                                onPressed: () {
                                  if (!usedDices[index] && expectNum) {
                                    setState(() {
                                      numUsed[turn] = dices[index].toString();
                                      numUsedIndex[turn] = index;
                                    });
                                    expectNum = false;
                                    usedDices[index] = true;
                                  }
                                },
                              ),
                            ),
                          ]);
                    })),

图片链接:https://drive.google.com/file/d/1_Jr4rz9GJ-D8-Xjxs2w8Sn8lOdnBBqTc/view?usp=sharing

如您所见,这里有很多不必要的空间,这似乎是 GridView.builder 的结果

最佳答案

该空间是 Flexible 的结果,它填充了可用空间。您会看到,如果您将其替换为 Container 并为其指定一个 height,它不会在下方产生那么多空间。

关于Flutter GridView.builder 正在生成不需要的额外空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57469972/

相关文章:

Flutter - 用动态数据填充表格

android - setState() 回调参数在 flutter 中返回了一个 Future

firebase - Firebase for Flutter 中此身份验证背后的逻辑是什么?

dart - 模板不是自动绑定(bind)的

Flutter 从其祖父访问子函数

Dart 代码在我的 Flutter 应用程序中表现不同。列表<动态 >' is not a subtype of type ' 列表< map <字符串,动态>>

list - 如何在 Dart map 中使用和存储列表?

dart - 如何防止 RenderBox 覆盖其他小部件?

dart - 可以使用 Flutter 的变换类来动画缩放吗?

Flutter:如何在测试中访问/检查小部件的属性?