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