一尘不染

Flutter:约束不约束小部件 (explanation needed)

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))));
}
}

According to theContainer class
documentation

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

而是,小部件正在尝试尽可能大(父级大小)而不是50x50。我了解我可以使用UnconstrainedBox,但我正在寻找这种行为的解释。
getting](https://i.stack.imgur.com/xqk6E.png)](https://i.stack.imgur.com/xqk6E.png)


阅读 279

收藏
2020-08-13

共1个答案

一尘不染

问题是您的根容器。

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

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

Container(
  width: 250,
  height: 250,
  alignment: Alignment.center,
  child: Whatever(),
);
2020-08-13