Flutter-Stack

Stack是用來疊放組件的一種布局樣式周荐,我們看一段demo

Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Stack(
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
            FlutterLogo(size: 50,)
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }

運(yùn)行后效果如下


image.png

通過這個(gè)簡單的demo 我們可以看出Stack 的布局是子組件按照先后順序一個(gè)一個(gè)往上疊加顯示辛萍。

Stack對齊方式

Stack的對齊方式默認(rèn)是topLeft,左上角對齊羡藐,子組件層層往上疊加贩毕。對齊方式可以通過alignment參數(shù)來調(diào)整topCenter、topRight仆嗦、bottomLeft等等辉阶,根據(jù)自己的需要去設(shè)置就好。

Stack的實(shí)際大小

Stack的實(shí)際大小是跟Stack包含了哪些子組件相關(guān)的瘩扼,分為三大類一類是包含Positioned 子組件谆甜,一類是不包含Positioned子組件,一類是全是Postioned子組件

包含Positioned 子組件的Stack

Stack會計(jì)算出所有非Positioned組件中的最大尺寸的組件集绰,Stack會把自己的尺寸設(shè)置成這個(gè)最大組件的尺寸规辱,也就是說Positioned組件不會影響Stack本身尺寸的大小

不包含Positioned子組件的Stack

Stack會把自己的尺寸設(shè)置成最大子組件的尺寸。

全是Postioned子組件的Stack

Stack會把自己的尺寸設(shè)置的盡可能的大栽燕,因?yàn)樗械慕M件都是Postioned子組件罕袋,沒有參照物,所以就把自己設(shè)置的越大越好碍岔,這樣設(shè)計(jì)是為了讓Postioned組件方便設(shè)置位置浴讯,

fit屬性對Stack大小的影響

fit 屬性默認(rèn)值StackFit.loose,是一個(gè)寬松的約束蔼啦,Stack允許子組件的大小在0到Stack本上尺寸的上限之間稍微小一點(diǎn)榆纽。
StackFit.expand,要求子組件填滿Stack上級約束的空間捏肢。并不是Stack直接把自己按照上級約束設(shè)置自己的空間大小
StackFit.passthrough 是把Stack上級的約束直接傳給Stack子組件奈籽,子組件按照上級的約束設(shè)置自己的尺寸大小。

Stack 溢出問題

Stack子組件的width 或 height 有可能超出Stack 本身的大小鸵赫,Stack 的clipBehavior 屬性可以控制子組件超出Stack部分的是否顯示衣屏,clipBehavior: Clip.hardEdge, 是Stack 的默認(rèn)行為,超出Stack 部分會被裁剪掉奉瘤。clipBehavior: Clip.none 超出Stack部分是不會被裁剪的會顯示出來勾拉,但是需要注意的是,超出的部分是不會響應(yīng)點(diǎn)擊事件的盗温,這是由于flutter 的框架決定的藕赞,因?yàn)槌龅牟糠植辉赟tack 范圍內(nèi),點(diǎn)擊的區(qū)域在Stack區(qū)域內(nèi),才會將事件傳遞給Stack的子組件,然后層層傳遞直到找到響應(yīng)的組件跨细。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市批销,隨后出現(xiàn)的幾起案子洒闸,更是在濱河造成了極大的恐慌,老刑警劉巖均芽,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丘逸,死亡現(xiàn)場離奇詭異,居然都是意外死亡掀宋,警方通過查閱死者的電腦和手機(jī)深纲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來劲妙,“玉大人湃鹊,你說我怎么就攤上這事×头埽” “怎么了币呵?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長侨颈。 經(jīng)常有香客問我余赢,道長,這世上最難降的妖魔是什么肛搬? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任没佑,我火速辦了婚禮毕贼,結(jié)果婚禮上温赔,老公的妹妹穿的比我還像新娘。我一直安慰自己鬼癣,他們只是感情好陶贼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著待秃,像睡著了一般拜秧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上章郁,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天枉氮,我揣著相機(jī)與錄音,去河邊找鬼暖庄。 笑死聊替,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的培廓。 我是一名探鬼主播惹悄,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼肩钠!你這毒婦竟也來了泣港?” 一聲冷哼從身側(cè)響起暂殖,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎当纱,沒想到半個(gè)月后呛每,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坡氯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年莉给,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廉沮。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡颓遏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出滞时,到底是詐尸還是另有隱情叁幢,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布坪稽,位于F島的核電站曼玩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏窒百。R本人自食惡果不足惜黍判,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望篙梢。 院中可真熱鬧顷帖,春花似錦、人聲如沸渤滞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妄呕。三九已至陶舞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绪励,已是汗流浹背肿孵。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留疏魏,地道東北人停做。 一個(gè)月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像蠢护,于是被迫代替她去往敵國和親雅宾。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1. Stack組件 在開發(fā)中,我們多個(gè)組件很有可能需要重疊顯示眉抬,比如在一張圖片上顯示文字或者一個(gè)按鈕等贯吓。 在An...
    WinJayQ閱讀 664評論 0 0
  • 本來想著寫幾個(gè)字,后面想想還是代碼 Stack和Positioned這兩個(gè)組件來配合實(shí)現(xiàn)絕對定位蜀变。Stack允許子...
    jugg_can閱讀 1,347評論 0 2
  • Stack Stack 這個(gè)是Flutter中布局用到的組件悄谐,可以疊加的顯示View。 alignment : 指...
    趙哥窟閱讀 1,608評論 0 2
  • 一库北、Widget Flutter設(shè)計(jì)思想爬舰,Everything is Widget。 Widget 是一個(gè)比較寬泛...
    磊Se閱讀 573評論 0 1
  • 概述 單子布局組件 多子布局組件 一寒瓦、單子布局組件 單子布局組件的含義是其只有一個(gè)子組件情屹,可以通過設(shè)置一些屬性設(shè)置...
    IIronMan閱讀 672評論 0 2