Flutter 容器盒子模型的使用示例
在講 Flutter 的盒子模型前,先看看HTML 中的盒子模型。如下圖所示,一個(gè)頁面元素包括了與父級(jí)容器的外邊距(margin),自身內(nèi)容與邊框的內(nèi)邊距(padding)。外邊距 和內(nèi)邊距都可以通過 LTRB (左、上、右、下)單獨(dú)設(shè)定四個(gè)方向的大小。

Flutter 的盒子模型和 HTML 的是一樣的,而通用的容器 Container 就相當(dāng)于是一個(gè)通用的容器,和 HTML 的 div 標(biāo)簽一樣。如果要控制一個(gè)元素的尺寸,外邊距,內(nèi)邊距和邊框,最通用的做法是使用 Container 容器將元素包裹。當(dāng)然 Flutter 也提供了一些更為具體的布局組件方便開發(fā),例如 :
- SizedBox:指定尺寸的容器。
- ConstaintedBox:帶約束條件的容器,如限制最小最大寬度和高度。
- DecoratedBox:帶裝飾的容器,比如漸變色。
- RotatedBox:旋轉(zhuǎn)一定角度的容器。
上面這些組件實(shí)際都可以通過 Container 的參數(shù)設(shè)置完成,只是開發(fā)的時(shí)候使用具體的容器可以減少組件參數(shù)。
樣例代碼
下面就使用一個(gè)具體的例子來說明盒子模型的具體概念,由于這里不涉及數(shù)據(jù)變化引起界面變化,因此直接使用 Stateless 無狀態(tài)組件,代碼如下:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter 盒子模型',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(
title: Text('盒子模型'),
),
body: Center(
child: Container(
width: 300,
height: 300,
color: Colors.blue,
child: Container(
color: Colors.red,
margin: EdgeInsets.fromLTRB(10, 0, 20, 30),
child: Container(
margin: EdgeInsets.fromLTRB(10, 10, 10, 10),
color: Colors.white60,
child: Text('這是一長(zhǎng)段文字,這是一長(zhǎng)段文字,這是一長(zhǎng)段文字,這是一長(zhǎng)段文字,這是一長(zhǎng)段文字,這是一長(zhǎng)段文字'),
padding: EdgeInsets.fromLTRB(10, 10, 10, 10),
),
),
),
),
),
);
}
}
這里在 body里的組件層級(jí)如下:
- Center:居中組件。
- Container:300 x 300大小,顏色為藍(lán)色,為最外層組件。
- Container:沒指定大?。ㄍㄟ^盒子模型約束控制大小),與父級(jí)組件的外邊距為左10,上0,右20,下30,顏色為紅色。
- Container:沒指定大小,與父級(jí)組件的上下左右外邊距均為10,內(nèi)邊距上下左右均為10,顏色為白色。
- Text:顯示多行文本,用于展示內(nèi)邊距效果。
- Container:300 x 300大小,顏色為藍(lán)色,為最外層組件。
運(yùn)行后的界面如下圖所示,可以看到和預(yù)期一致。

以上就是Flutter 容器盒子模型的使用示例的詳細(xì)內(nèi)容,更多關(guān)于Flutter 容器的盒子模型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android如何從實(shí)現(xiàn)到封裝一個(gè)MVP詳解
原生的 MVC 框架遇到大規(guī)模的應(yīng)用,就會(huì)變得代碼難讀,不好維護(hù),無法測(cè)試的囧境。因此,Android 開發(fā)方面也有很多對(duì)應(yīng)的框架來解決這些問題。所以這篇文章主要給大家介紹了關(guān)于Android如何從實(shí)現(xiàn)到封裝一個(gè)MVP的相關(guān)資料,需要的朋友可以參考下。2017-09-09
Android ExpandableListView長(zhǎng)按事件的完美解決辦法
本篇文章是對(duì)Android中ExpandableListView長(zhǎng)按事件的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Android Studio4.0導(dǎo)入OpenCv4.3.0的方法步驟
這篇文章主要介紹了Android Studio4.0導(dǎo)入OpenCv4.3.0的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Android實(shí)現(xiàn)購(gòu)物車及其他功能的角標(biāo)
本文主要介紹了Android實(shí)現(xiàn)購(gòu)物車及其他功能的角標(biāo)的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-04-04
Android實(shí)現(xiàn)消息總線的幾種方式詳解
關(guān)于Android消息傳遞方式比較多,一般的系統(tǒng)原生實(shí)現(xiàn)方式比如Handler?、自定義廣播、接口回調(diào),以及三方工具?EventBus?、RxBus?等,下面這篇文章主要給大家介紹了關(guān)于Android實(shí)現(xiàn)消息總線的幾種方式,需要的朋友可以參考下2022-06-06
Android原生側(cè)滑控件DrawerLayout使用方法詳解
這篇文章主要為大家詳細(xì)介紹了Android原生側(cè)滑控件DrawerLayout的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Android 使用AsyncTask實(shí)現(xiàn)多線程斷點(diǎn)續(xù)傳
本文將詳細(xì)講解如何使用AsyncTask來實(shí)現(xiàn)多線程的斷點(diǎn)續(xù)傳下載功能,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05
Ubuntu16.04 LTS 下安裝 Android Studio 2.2.2 的詳細(xì)步驟
這篇文章主要介紹了Ubuntu16.04 LTS 下安裝 Android Studio 2.2.2 的詳細(xì)步驟,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11

