Flutter - 当一个兄弟组件使用了Flexible时,Expanded无法占据所有可用空间。

21 浏览
0 Comments

Flutter - 当一个兄弟组件使用了Flexible时,Expanded无法占据所有可用空间。

问题的图像,以彩色矩形显示\n我希望Column的第一个子元素是Flexible,第二个子元素占据剩余的所有空间。显然,这样不起作用。\n我现在意识到这是预期的行为。我希望找到一个解决方法。\n我尝试在第一个子元素上使用FittedBox而不是Flexible,但它不起作用,因为第一个子元素的内容宽度没有限制。\n我想让第一个子元素(即TextField)变得灵活,这样如果高度变得太小,就不会出现丑陋的黄黑溢出条。\n更新:\n下面的图像显示了我真正想做的事情,但由于第一个子元素不是灵活的,所以会出现溢出问题。\n使用Flexible时会发生的情况。

0
0 Comments

问题的原因是在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无法占据所有可用空间的问题。

0