Layout 布局中有一个奇怪的Fittedbox堆栈行为?

Layout 布局中有一个奇怪的Fittedbox堆栈行为?,layout,stack,material-design,flutter,Layout,Stack,Material Design,Flutter,我遵循卡片主题的教程,编写了颤振画廊卡片示例的代码 这里的名片示例 我不知道stack combine和fittedbox的逻辑。为什么会有高度?我只是按照教程设置底部、左侧和右侧的边距为16.0,16.0,16.0。若我并没有任何误解的话,这是父母和大小盒子之间的一个空白。为什么会有高度?这里面有什么黑魔法密码吗?我只是想了解其中的逻辑 我的结果图像 var titleImage2 = new SizedBox( height: 200.0, child: new

我遵循卡片主题的教程,编写了颤振画廊卡片示例的代码

这里的名片示例

我不知道stack combine和fittedbox的逻辑。为什么会有高度?我只是按照教程设置底部、左侧和右侧的边距为16.0,16.0,16.0。若我并没有任何误解的话,这是父母和大小盒子之间的一个空白。为什么会有高度?这里面有什么黑魔法密码吗?我只是想了解其中的逻辑

我的结果图像

 var titleImage2 = new SizedBox(
      height: 200.0,
      child: new Stack(
        children : <Widget> [
            //new Text("First element" , style: new TextStyle(color: Colors.red),),
            new Positioned(
                //top: 0.0,
                left : 16.0, 
                right : 16.0, 
                bottom: 16.0,
                //width: 100.0,
              child: new FittedBox(
                fit : BoxFit.scaleDown, 
                alignment: Alignment.topLeft,
                child : new Container(
                  child: new Text(
                      "Hello world"
                  ),
                )
              ),
            )],
      ),
); 

怪异形象


我无法告诉您实现这一点的实际算法的细节,但我可以告诉您原因-因为您使用的是FittedBox。FittedBox会根据父项和子项的约束进行各种计算,以尝试将您的项适配到父项中。它对于像图像这样的东西很有用,这些图像具有特定的纵横比,但对其大小没有限制

因为您有一个文本作为FittedBox的子对象,它可能在计算它可以缩放到的大小时遇到问题-我不知道文本会报告什么(我忽略了容器,因为如果它没有设置宽度和高度,它基本上只是将布局委托给它的子对象)。尝试将其设置为BoxFit.cover,您将看到发生了什么。但我不知道为什么它会选择那种特殊的尺寸


我建议移除FittedBox,除非您使用的是图像;这就是你所看到的原因

事实上,我一次又一次地测试它。如果我设置了安装盒的固定高度,它将使用固定高度。我试过盒盖。似乎还出现了高度。谢谢你的回复。稍后我会更新我的测试结果
left : 16.0, 
right : 16.0, 
bottom: 16.0,