第一章●第六節(jié):組件介紹<03>

【接上篇:第一章●第五節(jié):組件介紹<02>


包裝小組件

默認情況下,行或列沿其主軸占用盡可能多的空間,但如果要將子項緊密組合在一起,我們需要將mainAxisSize屬性設置為MainAxisSize.min。

Row(
  children: <Widget>[
    Row(
      mainAxisSize: MainAxisSize.min,
      children: <Widget>[
        Icon(Icons.star, color: Colors.redAccent,),
        Icon(Icons.star, color: Colors.redAccent),
        Icon(Icons.star, color: Colors.redAccent),
        Icon(Icons.star),
        Icon(Icons.star),
      ],
    ),
  ],
),

嵌套行和列

布局框架允許我們根據(jù)需要進行行列嵌套。

Container(
  padding: EdgeInsets.all(20),
  child: Row(
    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
    children: <Widget>[
      Row(
        children: <Widget>[
          Row(
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              Icon(Icons.star, color: Colors.redAccent,),
              Icon(Icons.star, color: Colors.redAccent),
              Icon(Icons.star, color: Colors.redAccent),
              Icon(Icons.star),
              Icon(Icons.star),
            ],
          ),
        ],
      ),
      Text(
        "評分",
        style: TextStyle(
          color: Colors.black,
          fontWeight: FontWeight.w800,
          fontFamily: 'Roboto',
          letterSpacing: 0.5,
          fontSize: 20
        ),
      )
    ],
  ),
),
Row(
  children: <Widget>[
    Column(
      children: <Widget>[
        Icon(Icons.home),
        Row(
          children: <Widget>[
            Text("首頁"),
          ],
        ),
        Row(
          children: <Widget>[
            Text("Home")
          ],
        )
      ],
    ),
    Column(
      children: <Widget>[
        Icon(Icons.account_circle),
        Row(
          children: <Widget>[
            Text("我的"),
          ],
        ),
        Row(
          children: <Widget>[
            Text("Mine")
          ],
        )
      ],
    ),
    Column(
      children: <Widget>[
        Icon(Icons.message),
        Row(
          children: <Widget>[
            Text("消息"),
          ],
        ),
        Row(
          children: <Widget>[
            Text("Message")
          ],
        )
      ],
    ),
  ],
)

從上面示例我們可以看出,五顆星和評分在一行,圖標和文本在一行,并分為三列。結(jié)構(gòu)樹圖如下:


提示:為了使代碼更容易閱讀,我們在書寫時可以將嵌套的各個部分定義成變量或函數(shù),在具體的使用時直接引用變量或函數(shù)即可。同時我們還可以對重復出現(xiàn)的代碼進行封裝,將其封裝成一個公用的變量或函數(shù)。

常見的布局組件

Flutter擁有豐富的布局組件,以下為常用的組件,其他組件,請閱讀API參考文檔。
以下組件分為兩類:一來自組件庫的標準組件,二來自Material庫的專用組件。任何應用都可以使用標準組件,但只有Material應用可以使用Material庫中的組件。

標準組件
  • Container(容器):向組件添加填充,邊距,邊框,背景顏色或其他裝飾。
  • GridView(網(wǎng)格):將組件作為可滾動網(wǎng)格展示。
  • ListView(列表):將組件作為可滾動列表展示。
  • Stack(堆疊):一個組件上方重疊另一個組件。
Material 組件
  • Card(卡片):將相關信息整理到帶圓角和陰影的盒子中。
  • ListTile(列表標題):將最多三行文本、可選的前導和后面的圖標放置在一行中。

總目錄結(jié)構(gòu)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容