Flutter GridView.builder正在生成多余的多余空间

时间:2019-08-13 01:11:56

标签: flutter dart

我正在尝试显示一行按钮。由于按钮的数量取决于List中元素的数量,因此我必须使用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;
                                  }
                                },
                              ),
                            ),
                          ]);
                    })),

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

您可以看到这里有很多不必要的空间,这似乎是GridView.builder的重用

1 个答案:

答案 0 :(得分:1)

该空间是Flexible的结果,它填充了可用空间。您会看到,如果将其替换为Container并给其height,则在下面不会产生太大的空间。