轉(zhuǎn)自
襄城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
在 Flutter 中,有兩類常用的 Widget:
在開發(fā)過程中,我們經(jīng)常需要繼承它們兩來實(shí)現(xiàn)自己的 Widget。
一個 StatelessWidget 是不能被改變的,比如: Icon 、 Text 等。
如果你的控件一旦顯示,就不需要再做任何的變更,那么你應(yīng)該使用 StatelessWidget 。
實(shí)現(xiàn)一個自己的 StatelessWidget 很簡單。
當(dāng)你看到下面這個例子?時,你就知道它有多簡單了。
看,只要在 build() 中返回你的視圖就可以了。
一個 StatefulWidget 是有狀態(tài)的,可變的。
它可以改變自己的外觀,以響應(yīng)用戶的操作或者數(shù)據(jù)的變化。
比如: CheckBox 、 Switch ..
我們之所以能夠改變一個 StatefulWidget ,是因?yàn)樗幸粋€設(shè)置狀態(tài)的函數(shù):
調(diào)用這個函數(shù)后,就會觸發(fā) StatefulWidget 的視圖樹重建。
因此,當(dāng)我們需要一個可交互的,即能根據(jù)用戶操作或數(shù)據(jù)變化而改變視圖的 Widget 時,那就得用上 StatelessWidget 了。
現(xiàn)在,來創(chuàng)建一個自定義的 StatefulWidget:
從上面的例子中可以看到, StatefulWidget 會要求提供一個含有視圖樹的 State 。
既然 State 能夠控制一個視圖的狀態(tài),那它肯定會有一系列的生命周期。
上圖就是 State 的生命周期圖。
這種方法最常見,但是有些地方引用的話,刷新的成本比較大,刷新的是整個頁面,數(shù)據(jù)太多加載太慢的話,會有閃爍的現(xiàn)象
這種方法類似于iOS中的set方法,通過設(shè)置某個屬性的時候,去刷新某個控件。在flutter中這種刷新方式,是對上面setState(){}方法的改進(jìn),根本的方法還是setState(){},只不過是通過方法去刷新某個控件。如下:
首先在pubspec.yaml中添加provider依賴
下面通過provider來實(shí)現(xiàn)一個發(fā)送驗(yàn)證碼的案例。
創(chuàng)建一個TimerModel文件
頁面布局如下:
Element管理Widget和RenderObject。
widget保持顯示當(dāng)前的頁面狀態(tài),當(dāng)widget產(chǎn)生點(diǎn)擊等交互,調(diào)用setState()改變element中管理的state,