Flutter(58):Layout组件之SizedBox

Flutter教学目录持续更新中

Github源代码持续更新中

1.SizedBox介绍

一个特定大小的盒子。这个widget给予子控件宽度和高度。如果宽度或高度为null,则此widget将调整自身大小以匹配子控件的大小。

2.SizedBox属性

  • width:宽
  • height: 高
  • child:
SizedBox尺寸调节:
  • SizedBox没有宽高约束,子控件有宽高约束,那么SizedBox会调节自己匹配子控件大小
  • SizedBox有宽高约束,SizedBox子控件没有宽高约束,SizedBox父控件无约束,那么SizedBox会将自己的约束条件给予SizedBox子控件
  • SizedBox父控件有约束,那么约束会传递给SizedBox
  _myChild() {
    return DecoratedBox(decoration: BoxDecoration(color: Colors.red));
  }

          SizedBox(
            child: Container(
              width: 20,
              height: 20,
              child: _myChild(),
            ),
          ),
          Container(
            margin: EdgeInsets.only(top: 10),
            child: SizedBox(
              width: 20,
              height: 20,
              child: _myChild(),
            ),
          ),
          Container(
            width: 20,
            height: 20,
            margin: EdgeInsets.only(top: 10),
            child: SizedBox(
              child: _myChild(),
            ),
          ),

3.SizedBox.expand属性

  • child:

尽可能大的在父控件的约束内显示

          Container(
            margin: EdgeInsets.only(top: 10),
            color: Colors.blue,
            width: 50,
            height: 50,
            child: SizedBox.expand(
              child: _myChild(),
            ),
          ),

4.SizedBox.shrink属性

  • child:

尽可能小的在父控件的约束内显示

          Container(
            margin: EdgeInsets.only(top: 10),
            color: Colors.blue,
            constraints: BoxConstraints(
              maxWidth: 100,
              maxHeight: 100,
              minWidth: 10,
              minHeight: 10,
            ),
            child: SizedBox.shrink(
              child: _myChild(),
            ),
          ),

5.SizedBox.fromSize属性

  • size:Size
  • child:

以Size尺寸约束

  _mySize() {
    return Size(20, 20);
  }

          Container(
            margin: EdgeInsets.only(top: 10),
            child: SizedBox.fromSize(
              size: _mySize(),
              child: _myChild(),
            ),
          ),

6.最后我们顺便讲一下Size

  • Size(width, height):指定宽高
  • Size.copy(size) :从另一个Size复制尺寸
  • Size.square(dimension):正方形,dimension:边长
  • Size.fromWidth(width):指定宽度
  • Size.fromHeight(height):指定高度
  • Size.fromRadius(radius):指定半径,结果一样是正方形,Size.fromRadius(radius) = Size.square(2* radius)
image.png

下一节:Layout组件之Transform

Flutter(59):Layout组件之Transform

Flutter教学目录持续更新中

Github源代码持续更新中

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。