在flutter
中,提供了constrainedbox
、sizedbox
、unconstrainedbox
、aspectratio
來限制子元素的尺寸。
constrainedbox
主要用於對子元件進行額外的約束,比如,約束子元件的最小高度:
class constrainedwidget extends statelesswidget
}
上面的例子中,通過boxconstraints
來設定限制條件,它的定義如下:
const boxconstraints()
除此以外,它還定義了乙個便捷的建構函式,比如boxconstraints.tight(size size)
生成給定大小的限制;boxconstraints.expand()
可以用於生成乙個盡可能大的填充容器。
sizedbox
用於給子元素指定固定的寬高,示例:
class constrainedwidget extends statelesswidget
}
執行結果就是乙個 80 * 80 的小方塊,在此就不上了。
如果乙個元件有多個限制,意思就是多個constrainedbox
,那麼哪個會生效呢?看乙個示例:
class constrainedwidget extends statelesswidget
}
上面的元件decoratedbox
有兩個限制容器,他們的限制條件都不同,最後生效的是:寬90,高60.
也就是說,如果有多個限制條件,就會合併這些限制條件,取父子中數值較大者。
unconstrainedbox
不會對子元件產生任何約束條件,它允許子元件按照其本身的大小繪製,它的作用是去除多重限制的條件。示例:
class constrainedwidget extends statelesswidget
}
結果是乙個 90*20 的小方塊,unconstrainedbox
把頂層的約束條件去除了,所以子元件生效的是裡面的約束條件。 Flutter 基礎篇(十一) 布局元件
布局元件是指包含乙個或多個子元件的元件,不同的布局元件對子元件的排列方式不同。在前面的文章有提到,element樹才是最終的繪製樹,它是由widget樹來建立的,widget只是element的配置資料。在flutter中,根據widget是否需要包含子節點將widget分為三類,分別對應三種ele...
Flutter 基礎篇(五) Text 元件
text元件用於顯示簡單樣式文字,它包含一些控制文字顯示的屬性。其中,它有乙個必須的引數,就是文字字串。void main override widget build buildcontext context 執行結果,在螢幕 顯示了jonas。除此以外,常用的屬性還有 textalign.left...
Flutter 基礎篇(十三) 彈性布局
彈性布局,不是flutter特有的一種布局方式,在前端的各個領域中都存在,比如瀏覽器端通過flex來實現彈性布局。在flutter中,主要通過flex和expanded來實現彈性布局。flex元件可以沿著水平或垂直方向排列的子元件,如果你明確了主軸的方向,那麼更加應該使用row或column來代替f...