Flutter(58):Layout組件之SizedBox

Flutter教學(xué)目錄持續(xù)更新中

Github源代碼持續(xù)更新中

1.SizedBox介紹

一個(gè)特定大小的盒子。這個(gè)widget給予子控件寬度和高度。如果寬度或高度為null,則此widget將調(diào)整自身大小以匹配子控件的大小。

2.SizedBox屬性

  • width:寬
  • height: 高
  • child:
SizedBox尺寸調(diào)節(jié):
  • SizedBox沒有寬高約束,子控件有寬高約束,那么SizedBox會(huì)調(diào)節(jié)自己匹配子控件大小
  • SizedBox有寬高約束,SizedBox子控件沒有寬高約束,SizedBox父控件無(wú)約束,那么SizedBox會(huì)將自己的約束條件給予SizedBox子控件
  • SizedBox父控件有約束,那么約束會(huì)傳遞給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:

盡可能大的在父控件的約束內(nèi)顯示

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

4.SizedBox.shrink屬性

  • child:

盡可能小的在父控件的約束內(nèi)顯示

          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) :從另一個(gè)Size復(fù)制尺寸
  • Size.square(dimension):正方形,dimension:邊長(zhǎng)
  • Size.fromWidth(width):指定寬度
  • Size.fromHeight(height):指定高度
  • Size.fromRadius(radius):指定半徑,結(jié)果一樣是正方形,Size.fromRadius(radius) = Size.square(2* radius)
image.png

下一節(jié):Layout組件之Transform

Flutter(59):Layout組件之Transform

Flutter教學(xué)目錄持續(xù)更新中

Github源代碼持續(xù)更新中

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。