Flutter 學(xué)習(xí)打卡
StatelessWidget, StatefullWidget
StatelessWidget 無狀態(tài)widget
StatefullWidget 有狀態(tài)widget
<font color=ff4747> 無狀態(tài) </font>Widget, 一旦創(chuàng)建過后, 其狀態(tài)不允許改動(dòng), 不可調(diào)用setState()刷新狀態(tài).(注: 只限制本身不可改變, 其父/子 widget 不會(huì)限制).
<font color=ff4747> 有狀態(tài) </font>Widget, 創(chuàng)建過后, 可以通過setState()方法來改變其狀態(tài).
StatelessWidget 的實(shí)現(xiàn)
<font color=666666>在需要實(shí)現(xiàn)一個(gè)StatelessWidget組件的時(shí)候,聲明一個(gè)class類StateLessDemo需要通過extends繼承StatelessWidget,然后實(shí)現(xiàn)build方法,就可以創(chuàng)建一個(gè)無狀態(tài)的Widget。這個(gè)Widget創(chuàng)建完成后,Widget的狀態(tài)就固定了,當(dāng)前Widget就是一個(gè)無狀態(tài)的,當(dāng)前Widget
的內(nèi)容固定,不可更改。
注意: 如果無狀態(tài)Widget里面有子Widget,并且子Widget是有狀態(tài)的,則子Widget的內(nèi)容是可以通過setState來更改的。無狀態(tài)Widget影響的僅僅是自己是無狀態(tài)的,不回影響他的父Widget和子Widget。
無狀態(tài)Widget是不能調(diào)用setState函數(shù)</font>
StatefullWidget 的實(shí)現(xiàn)
<font color=666666>StatefulWidget組件的實(shí)現(xiàn)相對(duì)于StatelessWidget來說,復(fù)雜那么一點(diǎn)點(diǎn)。首先也是要通過extends繼承StatefulWidget,然后實(shí)現(xiàn)State createState()函數(shù),實(shí)現(xiàn)createState的過程中,可以通過State來集成一個(gè)有狀態(tài)的Widget。</font>
Container 的decoration 屬性
decoration可以設(shè)置邊框、背景色、背景圖片、圓角等屬性,非常實(shí)用。對(duì)于transform這個(gè)屬性,一般有過其他平臺(tái)開發(fā)經(jīng)驗(yàn)的,都大致了解,這種變換,一般不是變換的實(shí)際位置,而是變換的繪制效果,也就是說它的點(diǎn)擊以及尺寸、間距等都是按照未變換前的。
但需要注意的是 deoration和 color: 背景顏色不能共存,二者同時(shí)只能有一個(gè)
Expanded
Expanded這個(gè)控件會(huì)把同級(jí)別的控件,在父控件中填充滿整個(gè)父控件。
Expanded組件可以使Row、Column、Flex等子組件在其主軸方向上展開并填充可用空間(例如,Row在水平方向,Column在垂直方向)。如果多個(gè)子組件展開,可用空間會(huì)被其flex factor(表示擴(kuò)展的速度、比例)分割。
Expanded組件必須用在Row、Column、Flex內(nèi),并且從Expanded到封裝它的Row、Column、Flex的路徑必須只包括StatelessWidgets或StatefulWidgets組件(不能是其他類型的組件,像RenderObjectWidget,它是渲染對(duì)象,不再改變尺寸了,因此Expanded不能放進(jìn)RenderObjectWidget)。
注意一點(diǎn):在Row中使用Expanded的時(shí)候,無法指定Expanded中的子組件的寬度width,但可以指定其高度height。同理,在Column中使用Expanded的時(shí)候,無法指定Expanded中的子組件的高度height,可以指定寬度width。
GridView, ListView
GridView 將 widgets 排列為可滾動(dòng)的網(wǎng)格. 與iOS中CollectionView類似
ListView 將widget排列為可滾動(dòng)列表, 與 tableView類似