Flutter:如何仅使用其子级之一覆盖整个列

问题描述 投票:0回答:1

我有一列包含多个子项,这些子项是具有不同Flexible值的flex小部件。 (我的实际实现对于嵌套行/列更复杂,但是找到这种简单情况的解决方案将有所帮助)

当我以编程方式更改Flex值时,孩子们可以通过开箱即用的animation很好地适应他们的父母。我可以轻松地使它们更高/更短。

但是,当我希望其中一个孩子独自覆盖所有Column并为其他孩子设置flex=0时,它不起作用。在文档中说flex设置为0null意味着Flexible小部件不再“灵活”

我将如何处理?任何想法都欢迎。

Current setup

您可以从图像中看到:我想将绿色区域的flex值从3设置为0,并且只能看到覆盖整个屏幕的蓝色区域。

flutter dart flutter-layout
1个回答
0
投票

屏幕截图:

enter image description here


但是您可以为第二个孩子使用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)),
          ),
        ),
      ],
    ),
  );
}
© www.soinside.com 2019 - 2024. All rights reserved.