iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
Software Development

初學軟體開發系列 第 21

Day21-app介面的布局(終)

  • 分享至 

  • xImage
  •  

今日所學

  1. 層疊布局Stack
  2. 流失布局Wrap
  3. 對齊定位Align

使用Stack可以讓物件疊在一起,程式碼:

class StackPage extends StatelessWidget {
  const StackPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Stack(
      children: [
        Container(
          color: Colors.amber,
          width: 300,
          height: 300,
        ),
        Container(
          color: Colors.brown,
          width: 200,
          height: 200,
        ),
        Container(
          color: Colors.green,
          width: 100,
          height: 100,
        ),
      ],
    );
  }
}

https://ithelp.ithome.com.tw/upload/images/20220921/20151918c1ZD5ajDJd.png
其中也有對齊的屬性-使用aligment

class StackPage extends StatelessWidget {
  const StackPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Stack(
      alignment:Alignment.center,
      children: [
        Container(
          color: Colors.amber,
          width: 300,
          height: 300,
        ),
        Container(
          color: Colors.brown,
          width: 200,
          height: 200,
        ),
        Container(
          color: Colors.green,
          width: 100,
          height: 100,
        ),
      ],
    );
  }
}

使用center就會向中對齊
https://ithelp.ithome.com.tw/upload/images/20220921/20151918Vlu47Iz8Zn.png

最後一個是可以定位的方式-Positioned

const Positioned(
  left:90,
  top:90,
  child:FlutterLogo(size:100),
),

https://ithelp.ithome.com.tw/upload/images/20220921/20151918WBz66sXWQ3.png


下一個學習內容是流失布局-Wrap
流失布局運用在物件超出螢幕的時候,可以把多出去卻沒辦法顯示的物件,轉移到下一行顯示。
程式碼舉例:
我使用5個100*100的容器物件來橫著排,在沒有使用Wrap的時候
https://ithelp.ithome.com.tw/upload/images/20220921/20151918V1VlaU0cl3.png
下方使用Wrap流失
https://ithelp.ithome.com.tw/upload/images/20220921/20151918QecjyI0VEl.png
就可以達到原本螢幕顯示不了的畫面。

另外,在Wrap物件的屬性裡,還有一些可以做調整的屬性。
spacing->控制左右間距
runSpacing->控制上下間距

假設上下左右都給值10
https://ithelp.ithome.com.tw/upload/images/20220921/20151918YsfYVVRkb8.png
就會有分開的效果!


最後是對齊定位-Align
我覺得對齊定位的特色可以運用座標來設定物件的位置。
屬性介紹:
widthFactor->寬的限制因子
heightFactor->高的限制因子
可以控制範圍

https://ithelp.ithome.com.tw/upload/images/20220921/20151918NSMoAtKoMK.png
再加上我加入了 alignment:Alignment.topRight,,把圖案顯示在右上,可以證明有被限制住。
下圖是沒有限制因子

https://ithelp.ithome.com.tw/upload/images/20220921/20151918JlIdO4htdk.png
就直接跑到最右上

FractionalOffset->由左上角出來來設置座標,因為原本的原點都是在正中心,如果覺得從左上開始數座標比較容易的話,就可以用這個!


上一篇
Day20-介面彈性布局的認識
下一篇
Day22-如何在app上開發文字並有設計感!
系列文
初學軟體開發31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言