Answers:
您可以使用小技巧:假设您有以下要求: (Width,Height)
Wrap_content,Wrap_content:
 //use this as child
 Wrap(
  children: <Widget>[*your_child*])
Match_parent,Match_parent:
 //use this as child
Container(
        height: double.infinity,
    width: double.infinity,child:*your_child*)
Match_parent,Wrap_content:
 //use this as child
Row(
  mainAxisSize: MainAxisSize.max,
  children: <Widget>[*your_child*],
);
Wrap_content,Match_parent:
 //use this as child
Column(
  mainAxisSize: MainAxisSize.max,
  children: <Widget>[your_child],
);
              为了获得match_parent和wrap_content的行为,我们需要在Row / Column窗口小部件中使用mainAxisSize属性,mainAxisSize 属性采用MainAxisSize枚举,该枚举具有两个值,即 MainAxisSize.min(充当wrap_content)和MainAxisSize.max (充当match_parent)。
原始文章的链接
crossAxisAlignment,“行和列”上还有一个可以设置为CrossAxisAlignment.stretch在“列”中水平扩展的字段
                    简短的答案是,父级只有在孩子具有尺寸之前才具有尺寸。
Flutter中布局的工作方式是每个小部件都为其每个子控件提供约束,例如“您可以达到这个宽度,必须达到这个高度,至少必须达到这个宽度”,或其他任何条件(具体来说,它们获取最小宽度,最大宽度,最小高度和最大高度)。每个孩子都接受这些约束,执行某些操作,然后选择与这些约束匹配的大小(宽度和高度)。然后,一旦每个孩子都完成了自己的任务,小部件就可以选择自己的大小。
一些小部件尝试尽可能地增加其父部件所允许的尺寸。一些小部件会尽量减小其父级允许的尺寸。一些窗口小部件尝试匹配某个“自然”大小(例如,文本,图像)。
一些小部件告诉他们的孩子,他们可以是他们想要的任何尺寸。有些人给孩子施加与父母相同的约束。
PageView内部a Column,而另一个Column内部有当前电流时page,出现渲染错误,但是我可以通过将PageView内部包裹Expandeda或a 来修复它Flexible。问题是,这两个选项只会扩展他们的孩子。为什么没有相关的小部件可以缩小尺寸,例如“包装内容”,以解决此类渲染问题?
                    实际上有一些可用的选项:
您可以使用SizedBox.expand来使窗口小部件与父项尺寸匹配,或者使用SizedBox(width:double.infinity)仅匹配宽度,或者使用SizedBox(heigth:double.infinity)仅匹配高度。
如果要wrap_content行为,则取决于您使用的父窗口小部件,例如,如果在列上放置按钮,则其行为将类似于wrap_content,而将其用作match_parent时,则可以使用扩展窗口小部件或大小框来包装按钮。
使用ListView时,按钮具有match_parent行为,而要获得wrap_content行为,则可以使用诸如Row的Flex小部件将其包装。
使用“扩展”窗口小部件可使“行”,“列”或“伸缩”的子级展开以填充主轴上的可用空间(例如,水平放置为“行”或垂直放置为“列”)。 https://docs.flutter.io/flutter/widgets/Expanded-class.html
使用Flexible小部件可为Row,Column或Flex的子级提供扩展的灵活性,以填充主轴上的可用空间(例如,水平放置为Row或垂直放置为Column),但是与Expanded不同,Flexible不要求孩子填补可用空间。 https://docs.flutter.io/flutter/widgets/Flexible-class.html
一个简单的解决方法:
如果一个容器只有一个顶级子级,则可以为该子级指定对齐属性,并为其提供任何可用值。它将填充容器中的所有空间。
Container(color:Colors.white,height:200.0,width:200.0,
 child:Container(
    color: Colors.yellow,
    alignment:Alignment.[any_available_option] // make the yellow child match the parent size
   )
)
其他方式:
Container(color:Colors.white,height:200.0,width:200.0,
 child:Container(
    color: Colors.yellow,
    constraints:  BoxConstraints.expand(height: 100.0), // height will be 100 dip and width will be match parent
   )
)
              BoxConstraints.expand(height: 100.0)与Android width="match_parent"相当,效果很好
                    Stack(
  children: [
    Container(color:Colors.red, height:200.0, width:200.0),
    Positioned.fill(
      child: Container(color: Colors. yellow),
    )
  ]
),
              使用小部件Wrap。
对于Column类似的行为,请尝试:
  return Wrap(
          direction: Axis.vertical,
          spacing: 10,
          children: <Widget>[...],);
对于Row类似的行为,请尝试:
  return Wrap(
          direction: Axis.horizontal,
          spacing: 10,
          children: <Widget>[...],);
有关更多信息:包装(Flutter Widget)
在“列”中使用此行代码。对于wrap_content:mainAxisSize: MainAxisSize.min
对于match_parent:mainAxisSize: MainAxisSize.max
使用FractionallySizedBox小部件。
FractionallySizedBox(
  widthFactor: 1.0, // width w.r.t to parent
  heightFactor: 1.0,  // height w.r.t to parent
  child: *Your Child Here*
}
当您要将孩子的尺寸缩小为其父级尺寸的一小部分时,此小部件也非常有用。
例:
如果你希望孩子占据其母公司50%的宽度,提供
widthFactor如0.5
要让孩子填补父母,只需将其包装到FittedBox中
    FittedBox(
     child: Image.asset('foo.png'),
     fit: BoxFit.fill,
   )