<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Flutter Sizedbox 是一個 佈局元件,用來給 child 新增 tight 約束的,也可以用來新增空白。
width,height是 Sizedbox 的引數
BoxConstraints get _additionalConstraints { return BoxConstraints.tightFor(width: width, height: height); }
final BoxConstraints constraints = this.constraints; if (child != null) { child!.layout(_additionalConstraints.enforce(constraints), parentUsesSize: true); size = child!.size; } else { size = _additionalConstraints.enforce(constraints).constrain(Size.zero); }
enforce 方法根據 _additionalConstraints
返回一個新約束,新約束保證在引數 constraints
的範圍之內。
以上就是 SizedBox 的佈局邏輯,通過程式碼我們分析一下 child constrains, SizedBox size。
constrains 是 tight ,SizedBox 透傳 constrains 給 child。
constrains 是 loose,width 為空,SizedBox 透傳 minWidth,maxWith 給 child;height為空,SizedBox 透傳 minHeight,maxHeight 給 child。
constrains 是 loose,width 不為空, 在 constrains 範圍內 給 child 的 width tight 約束;height 不為空 在 constrains 範圍內 給 child 的 height tight 約束。
如果有 child ,和 child 一樣大。
沒有child ,constrains 是 tight ,大小為約束最小值。
沒有child ,constrains 是 loose,在約束範圍內由 width,height 引數指定。
SizedBox 雖然本身很簡單,但它命名建構函式確實不少。我們平時用的時候大多忽略了這些命名建構函式,所以應該先混個臉熟,用這些命名建構函式還是有好處的,可以增加程式碼的可讀性。
使 SizedBox 獲得最大 Size,也就是和父 widget 一樣大。
const SizedBox.expand({ super.key, super.child }) : width = double.infinity, height = double.infinity;
讓 SizedBox 儘量小。
const SizedBox.shrink({ super.key, super.child }) : width = 0.0, height = 0.0;
通過 size 來構造 SizedBox。
SizedBox.fromSize({ super.key, super.child, Size? size }) : width = size?.width, height = size?.height;
保證 SizedBox 是一個正方形。
const SizedBox.square({super.key, super.child, double? dimension}) : width = dimension, height = dimension;
當指定了 width,height 引數後,child 就獲得了寬高的 tight 約束。保證 child 有固定大小。這對於固定佈局非常有用。
可以用 padding 新增空白,但那樣會增加一層巢狀,用 SizedBox 充當空白看起來更好一些。
只是用來佔位,比如 Spacer 中的 child 用的就是 SizedBox.shrink。
class Spacer extends StatelessWidget { const Spacer({super.key, this.flex = 1}) : assert(flex != null), assert(flex > 0); final int flex; @override Widget build(BuildContext context) { return Expanded( flex: flex, child: const SizedBox.shrink(), ); } }
以上就是Flutter SizedBox佈局元件Widget使用範例詳解的詳細內容,更多關於Flutter SizedBox佈局元件Widget的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45