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

M. *_*ker 2 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))));
  }
}
Run Code Online (Sandbox Code Playgroud)

根据容器类文档 ...

如果窗口小部件没有子级且没有对齐方式,但是提供了高度,宽度或约束,则在给定那些约束和父级约束的组合的情况下,容器将尝试尽可能小。

而是,该小部件正在尝试尽可能大(父级大小)而不是50x50。我知道我可以使用UnconstrainedBox,但是我正在寻找这种行为的解释。

寻找: 寻找

目前得到: 目前正在

Rém*_*let 5

问题是您的根容器。

通过设置不带的width + height alignment,Container会强制其子级填充可用空间。

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

Container(
  width: 250,
  height: 250,
  alignment: Alignment.center,
  child: Whatever(),
);
Run Code Online (Sandbox Code Playgroud)