如何使小部件的高度最大为X像素?

时间:2020-09-15 10:30:24

标签: flutter flutter-layout

我有一个Private Sub MyCheckBox_Click() Dim CheckBoxStatus as Boolean: CheckBoxStatus = MyUserForm.MyCheckBox.Value Dim ComboBoxArray(0 To 4) ComboBoxArray(0) = MyUserForm.ComboBox1 ' This line repeated and modified for the other 4 array members If CheckBoxStatus Then For i = LBound(ComboBoxArray) To UBound(ComboBoxArray) CompetitorComboBoxes(i).Visible = True ' THIS IS WHERE THE ERROR IS THROWN Next i Else ' Appropriate else code to set the visibilities to False End Sub ,其中包含一些小部件,并且我希望这些小部件中的最后一个最大高度为100px,但是如果屏幕上没有足够的空间,那么它应该可以缩小到0px

因此,如果这是我的布局,我希望黑色正方形下方的部分最多为100px,但是如果屏幕太小,我希望它相应地缩小。

Column

请注意中间的 Center( child: Container( height: double.infinity, width: double.infinity, color: Colors.blue, child: Column( children: <Widget>[ SizedBox(height: 20), Container(color: Colors.white, width: 200, height: 200), SizedBox(height: 20), Container(color: Colors.grey, width: 400, height: 100), Expanded(child: SizedBox(height: double.infinity)), SizedBox(height: 50), Container(color: Colors.black, width: 200, height: 200), SizedBox(height: 100), ], ), ), ); -这可以调整灰色和黑色容器之间的距离以填充屏幕高度。问题是某些设备的屏幕很小,以至于Expanded变为0px,然后底部的Expanded会溢出。因此,为什么要调整它,但又不要使其高度超过100px。

即使通读了the documentation about constraints,我仍然不知道该如何实现。

2 个答案:

答案 0 :(得分:0)

回答您的问题,以使其达到最大高度,您可以尝试使用Constrained Box

ConstrainedBox(
    constraints: BoxConstraints(maxHeight: 100),
    child: SizedBox(height: 100),
)

这将使SizedBox的高度不能超过100像素。

但是,要实现所需的行为,您可以使用Flexible Widget

Flexible(
  child: SizedBox(height: 100),
);

Remember,Flexible的工作方式类似于Expanded,但它默认使用FlexFit.loose的值FlexFit,因此允许其子项小于可用空间。这样,它不会强制您的SizedBox大于预期的大小。

答案 1 :(得分:0)

最好的方法是使用MediaQuery,它还可以为您提供响应式布局。