Flutter:约束不约束小部件(需要解释)

时间:2018-09-19 22:32:28

标签: dart flutter

class Test extends StatelessWidget {
  Widget build(BuildContext context) {
    return UnconstrainedBox(
        child: Container(
            height: 250.0,
            width: 250.0,
            decoration:
                BoxDecoration(shape: BoxShape.circle, color: Colors.red),
            child: Opacity(
                opacity: 0.5,
                child: Container( // WIDGET IN QUESTION
                    constraints:
                        BoxConstraints.expand(width: 50.0, height: 50.0),
                    color: Colors.yellow))));
  }
}

根据Container class documentation ...

如果窗口小部件没有子级也没有对齐方式,但是提供了高度,宽度或约束,则考虑到这些约束和父约束的组合,Container会尽量缩小。 em>

相反,小部件正在尝试尽可能大(父级大小)而不是50x50。我了解我可以使用类似UnconstrainedBox之类的东西,但是我正在寻找这种行为的解释。

正在寻找: looking-for

目前正在获取currently-getting

1 个答案:

答案 0 :(得分:3)

问题出在您的根容器上。

通过设置宽度和高度alignment,Container会强制其子项填充可用空间。

如果希望该子项占用最少的空间,则需要指定根容器,以使其在子边界内对齐子项。

Container(
  width: 250,
  height: 250,
  alignment: Alignment.center,
  child: Whatever(),
);