最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter SizedBox布局組件Widget使用示例詳解

 更新時間:2023年02月13日 14:21:39   作者:IAM17  
這篇文章主要為大家介紹了Flutter SizedBox布局組件Widget使用示例詳解

正文

Flutter Sizedbox 是一個 布局組件,用來給 child 添加 tight 約束的,也可以用來添加空白。

width,height是 Sizedbox 的參數(shù)

 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 方法根據(jù) _additionalConstraints 返回一個新約束,新約束保證在參數(shù) constraints 的范圍之內(nèi)。

以上就是 SizedBox 的布局邏輯,通過代碼我們分析一下 child constrains, SizedBox size。

child 的 constrains

constrains 是 tight ,SizedBox 透傳 constrains 給 child。

constrains 是 loose,width 為空,SizedBox 透傳 minWidth,maxWith 給 child;height為空,SizedBox 透傳 minHeight,maxHeight 給 child。

constrains 是 loose,width 不為空, 在 constrains 范圍內(nèi) 給 child 的 width tight 約束;height 不為空 在 constrains 范圍內(nèi) 給 child 的 height tight 約束。

確定自己的大小

如果有 child ,和 child 一樣大。

沒有child ,constrains 是 tight ,大小為約束最小值。

沒有child ,constrains 是 loose,在約束范圍內(nèi)由 width,height 參數(shù)指定。

SizedBox 的命名構(gòu)造函數(shù)們

SizedBox 雖然本身很簡單,但它命名構(gòu)造函數(shù)確實不少。我們平時用的時候大多忽略了這些命名構(gòu)造函數(shù),所以應(yīng)該先混個臉熟,用這些命名構(gòu)造函數(shù)還是有好處的,可以增加代碼的可讀性。

SizedBox.expand

使 SizedBox 獲得最大 Size,也就是和父 widget 一樣大。

const SizedBox.expand({ super.key, super.child })
    : width = double.infinity,
      height = double.infinity;

SizedBox.shrink

讓 SizedBox 盡量小。

const SizedBox.shrink({ super.key, super.child })
    : width = 0.0,
      height = 0.0;

SizedBox.fromSize

通過 size 來構(gòu)造 SizedBox。

SizedBox.fromSize({ super.key, super.child, Size? size })
    : width = size?.width,
      height = size?.height;

SizedBox.square

保證 SizedBox 是一個正方形。

  const SizedBox.square({super.key, super.child, double? dimension})
    : width = dimension,
      height = dimension;

應(yīng)用場景

為 child 提供 tight 約束。

當(dāng)指定了 width,height 參數(shù)后,child 就獲得了寬高的 tight 約束。保證 child 有固定大小。這對于固定布局非常有用。

為 children 之間提供空白。

可以用 padding 添加空白,但那樣會增加一層嵌套,用 SizedBox 充當(dāng)空白看起來更好一些。

占位

只是用來占位,比如 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使用示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Flutter SizedBox布局組件Widget的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Flutter學(xué)習(xí)筆記(一)配置環(huán)境

    Flutter學(xué)習(xí)筆記(一)配置環(huán)境

    這篇文章主要介紹了Flutter學(xué)習(xí)筆記(一)配置環(huán)境,Flutter?app使用了?Dart語言,源自于?Google,現(xiàn)在是?ECMA?的標(biāo)準(zhǔn),需要的朋友可以參考下
    2023-04-04
  • flutter中如何使用和擴(kuò)展ThemeData實現(xiàn)詳解

    flutter中如何使用和擴(kuò)展ThemeData實現(xiàn)詳解

    這篇文章主要為大家介紹了flutter中如何使用和擴(kuò)展ThemeData實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Dart多態(tài)控制反轉(zhuǎn)編碼規(guī)范實例詳解

    Dart多態(tài)控制反轉(zhuǎn)編碼規(guī)范實例詳解

    這篇文章主要為大家介紹了Dart多態(tài)控制反轉(zhuǎn)編碼規(guī)范實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 淺析Dart語言的異步處理

    淺析Dart語言的異步處理

    Dart是一個單線程語言,我們在處理耗時操作的時候使用stream或者future來實現(xiàn),在這篇文章中我們將簡單的給大家聊一聊Dart語言的異步處理
    2023-06-06
  • 谷歌Sky語言怎么樣?什么是Dart編程語言?

    谷歌Sky語言怎么樣?什么是Dart編程語言?

    據(jù)外媒報道,在日前舉行Dart開發(fā)者峰會上,谷歌對外正式展示了Android最新的開發(fā)語言Sky,據(jù)悉,Sky本質(zhì)上就是谷歌自主的網(wǎng)頁開發(fā)語言Dart.
    2015-05-05
  • Dart?String字符串的常用方法總結(jié)概述

    Dart?String字符串的常用方法總結(jié)概述

    這篇文章主要為大家介紹了Dart?String字符串的常用方法概述,總結(jié)整理了大概4000多字,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Android開發(fā)中Dart語言7個很酷的特點(diǎn)

    Android開發(fā)中Dart語言7個很酷的特點(diǎn)

    這篇文章主要為大家介紹了Android開發(fā)中Dart語言7個很酷的特點(diǎn)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Dart?異步編程生成器及自定義類型用法詳解

    Dart?異步編程生成器及自定義類型用法詳解

    這篇文章主要為大家介紹了Dart?異步編程生成器及自定義類型用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Flutter Dart快速排序算法示例詳解

    Flutter Dart快速排序算法示例詳解

    這篇文章主要為大家介紹了Flutter Dart快速排序算法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Flutter SizedBox布局組件Widget使用示例詳解

    Flutter SizedBox布局組件Widget使用示例詳解

    這篇文章主要為大家介紹了Flutter SizedBox布局組件Widget使用示例詳解
    2023-02-02

最新評論

定边县| 武威市| 余江县| 阳山县| 延庆县| 浑源县| 搜索| 班戈县| 砚山县| 马山县| 濉溪县| 邹平县| 康平县| 洮南市| 洛隆县| 墨竹工卡县| 岫岩| 中牟县| 永昌县| 乳源| 南阳市| 乐亭县| 新野县| 章丘市| 正宁县| 佛坪县| 长武县| 织金县| 玛纳斯县| 五寨县| 敦煌市| 大庆市| 芮城县| 沅江市| 滨州市| 白朗县| 犍为县| 延安市| 台前县| 汾西县| 余江县|