做者 | 弗拉德
來源 | 弗拉德(公衆號:fulade_me)git
咱們先來看一下Container初始化的參數:github
Container({ Key key, // 位置 居左、居右、居中 this.alignment, // EdgeInsets Container的內邊距 this.padding, // 背景顏色 this.color, // 背景裝飾器 this.decoration, // 前景裝飾器 this.foregroundDecoration, // 寬度 double width, // 告訴 double height, // 約束 BoxConstraints constraints, // EdgeInsets Container的外邊距 this.margin, // 旋轉 this.transform, // 子控件 this.child, // 裁剪Widget的模式 this.clipBehavior = Clip.none, })
注意:數組
Container
的color
屬性與屬性 decoration
的color
存在衝突,若是兩個color
都作了設置,默認會以decoration
的color
爲準。Container
設置width
和height
,Container
會跟child
的大小同樣;假如咱們沒有設置child
的時候,它的尺寸會極大化,儘量的充滿它的父Widget
。1. 最簡單的Container網絡
Container( child: Text("Fulade"), color: Colors.red, )
Container接收一個child
參數,咱們能夠傳入Text
做爲child
參數,而後傳入是一個顏色。
app
2. Paddingthis
Container( child: Text("Pading 10"), padding: EdgeInsets.all(10), color: Colors.blue, )
Padding
是內邊距,咱們在這裏設置了padding: EdgeInsets.all(10)
,也就是說Text
距離Container
的四條邊的邊距都是10。
3d
3. Margincode
Container( child: Text("Margin 10"), margin: EdgeInsets.all(10), color: Colors.green, )
Margin
是外邊距,咱們在這裏設置了margin: EdgeInsets.all(10)
,Container
在原有大小的基礎上,又被包圍了一層寬度爲10的矩形。
須要注意,綠色外圍的白色區域也是屬於Container
的一部分。
orm
4. transform對象
Container( padding: EdgeInsets.symmetric(horizontal: 15), margin: EdgeInsets.all(10), child: Text("transform"), transform: Matrix4.rotationZ(0.1), color: Colors.red, )
transform
能夠幫助咱們作旋轉,Matrix4
給咱們提供了不少的變換樣式。
5. decoration
decoration
能夠幫助咱們實現更多的效果。例如形狀、圓角、邊界、邊界顏色等。
Container( child: Text("Decoration"), padding: EdgeInsets.symmetric(horizontal: 15), margin: EdgeInsets.all(10), decoration: BoxDecoration( color: Colors.red, shape: BoxShape.rectangle, borderRadius: BorderRadius.all(Radius.circular(5)), ), )
這裏就是設置了一個圓角的示例,一樣咱們對BoxDecoration
的color
屬性設置顏色,對整個Container
的也是有效的。
6. 顯示 Image
Container( height: 40, width: 100, margin: EdgeInsets.all(10), decoration: BoxDecoration( image: DecorationImage( image: AssetImage("images/flutter_icon_100.png"), fit: BoxFit.contain, ), ), )
BoxDecoration
能夠傳入一個Image
對象,這樣就靈活了不少,Image
能夠來自本地也能夠來自網絡。
7. Border
Container( child: Text('BoxDecoration with border'), padding: EdgeInsets.symmetric(horizontal: 15), margin: EdgeInsets.all(5), decoration: BoxDecoration( borderRadius: BorderRadius.circula(12), border: Border.all( color: Colors.red, width: 3, ), ), )
使用border
能夠幫助咱們作邊界效果,還能夠設置圓角borderRadius
,也能夠設置border
的寬度,顏色等。
8. 漸變色
Container( padding: EdgeInsets.symmetric(horizontal: 20), margin: EdgeInsets.all(20), //容器外填充 decoration: BoxDecoration( gradient: RadialGradient( colors: [Colors.blue, Colors.black, Colors.red], center: Alignment.center, radius: 5 ), ), child: Text( //卡片文字 "RadialGradient", style: TextStyle(color: Colors.white), ), )
BoxDecoration
的屬性gradient
能夠接收一個顏色的數組,Alignment.center
是漸變色開始的位置,能夠從左上角
、右上角
、中間
等位置開始顏色變化。
想體驗以上的Container
的示例的運行效果,能夠到個人Github倉庫項目flutter_app
->lib
->routes
->container_page.dart
查看,而且能夠下載下來運行並體驗。