我有一列包含多个子项,这些子项是具有不同Flexible
值的flex
小部件。 (我的实际实现对于嵌套行/列更复杂,但是找到这种简单情况的解决方案将有所帮助)
当我以编程方式更改Flex
值时,孩子们可以通过开箱即用的animation很好地适应他们的父母。我可以轻松地使它们更高/更短。
但是,当我希望其中一个孩子独自覆盖所有Column
并为其他孩子设置flex=0
时,它不起作用。在文档中说flex
设置为0
或null
意味着Flexible
小部件不再“灵活”
我将如何处理?任何想法都欢迎。
您可以从图像中看到:我想将绿色区域的flex值从3设置为0,并且只能看到覆盖整个屏幕的蓝色区域。
屏幕截图:
但是您可以为第二个孩子使用Flexible
而不是Expanded
,这也将起作用。
代码:
@override
Widget build(BuildContext context) {
int flex1 = 1, flex2 = 0;
return Scaffold(
appBar: AppBar(),
body: Column(
children: <Widget>[
Expanded(
flex: flex1,
child: Container(
color: Colors.blue,
height: 100,
alignment: Alignment.center,
child: Text("Flex: $flex1", style: TextStyle(fontSize: 32, fontWeight: FontWeight.bold)),
),
),
Expanded( // you can use Flexible also
flex: flex2,
child: flex2 == 0 ? SizedBox() : Container(
color: Colors.green,
alignment: Alignment.center,
child: Text("Flex: $flex2", style: TextStyle(fontSize: 32, fontWeight: FontWeight.bold)),
),
),
],
),
);
}