Flutter - 当一个兄弟组件使用了Flexible时,Expanded无法占据所有可用空间。
Flutter - 当一个兄弟组件使用了Flexible时,Expanded无法占据所有可用空间。
问题的图像,以彩色矩形显示\n我希望Column的第一个子元素是Flexible,第二个子元素占据剩余的所有空间。显然,这样不起作用。\n我现在意识到这是预期的行为。我希望找到一个解决方法。\n我尝试在第一个子元素上使用FittedBox而不是Flexible,但它不起作用,因为第一个子元素的内容宽度没有限制。\n我想让第一个子元素(即TextField)变得灵活,这样如果高度变得太小,就不会出现丑陋的黄黑溢出条。\n更新:\n下面的图像显示了我真正想做的事情,但由于第一个子元素不是灵活的,所以会出现溢出问题。\n使用Flexible时会发生的情况。
问题的原因是在Flutter中,当使用Flexible和Expanded组件共同作为父子组件时,Expanded无法占据所有可用空间的问题。解决方法是将Flexible组件替换为SizedBox,并设置其宽度和高度,然后将Expanded组件替换为Container组件,并设置其颜色来填充剩余的空间。以下是解决方法的代码示例:
SizedBox(
height: 300,
width: 50,
child: Container(
color: Colors.black,
child: Column(
mainAxisSize: MainAxisSize.min,
children:
SizedBox(
height: 100,
child: Container(
color: Colors.red,
),
),
Expanded(
child: Container(
color: Colors.blue,
),
),
],
),
),
);
通过使用SizedBox和Container组件的组合,我们可以解决Expanded无法占据所有可用空间的问题。