我正在尝试显示一行按钮。由于按钮的数量取决于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的重用
答案 0 :(得分:1)
该空间是Flexible
的结果,它填充了可用空间。您会看到,如果将其替换为Container
并给其height
,则在下面不会产生太大的空间。