Flutter 中的生命周期,包含以下幾個(gè)階段:
- createState ,在 StatefulWidget 中創(chuàng)建 State 的方法,當(dāng) StatefulWidget 調(diào)用時(shí)會(huì)觸發(fā) createState 。
- initState ,在 State 初始化時(shí)調(diào)用,因此可以在此期間執(zhí)行 State 各變量的初始賦值,同時(shí)也可以在此期間與服務(wù)端交互,獲取服務(wù)端數(shù)據(jù)后調(diào)用 setState 來(lái)設(shè)置 State。
- didChangeDependencies ,該函數(shù)是在該組件依賴的 State 發(fā)生變化時(shí),這里說(shuō)的 State 為全局 State ,例如語(yǔ)言或者主題等,類(lèi)似于前端 Redux 存儲(chǔ)的 State 。
- build ,主要是返回需要渲染的 Widget ,由于 build 會(huì)被調(diào)用多次,因此在該函數(shù)中只能做返回Widget 相關(guān)邏輯,避免因?yàn)閳?zhí)行多次導(dǎo)致?tīng)顟B(tài)異常。
- reassemble ,主要是提供開(kāi)發(fā)階段使用,在 debug 模式下,每次熱重載都會(huì)調(diào)用該函數(shù),因此在 debug 階段可以在此期間增加一些 debug 代碼,來(lái)檢查代碼問(wèn)題。
- didUpdateWidget ,該函數(shù)主要是在組件重新構(gòu)建,比如說(shuō)熱重載,父組件發(fā)生 build 的情況下,子組件該方法才會(huì)被調(diào)用,其次該方法調(diào)用之后一定會(huì)再調(diào)用本組件中的 build 方法。
- deactivate ,在組件被移除節(jié)點(diǎn)后會(huì)被調(diào)用,如果該組件被移除節(jié)點(diǎn),然后未被插入到其他節(jié)點(diǎn)時(shí),則會(huì)繼續(xù)調(diào)用 dispose 永久移除。
- dispose ,永久移除組件,并釋放組件資源。
?整個(gè)過(guò)程分為四個(gè)階段:
1. 初始化階段,包括兩個(gè)生命周期函數(shù) createState 和 initState;
2. 組件創(chuàng)建階段,也可以稱組件出生階段,包括 didChangeDependencies 和 build;
3. 觸發(fā)組件多次 build ,這個(gè)階段有可能是因?yàn)?didChangeDependencies、setState 或者
didUpdateWidget 而引發(fā)的組件重新 build ,在組件運(yùn)行過(guò)程中會(huì)多次被觸發(fā),這也是優(yōu)化過(guò)程
中需要著重需要注意的點(diǎn);
4. 最后是組件銷(xiāo)毀階段,deactivate 和 dispose。
觸發(fā)組件再次 build 有三種方式,一個(gè)是 setState ,另一個(gè)是 didChangeDependencies ,再一個(gè)是
didUpdateWidget 。
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-528485.html文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-528485.html
?
到了這里,關(guān)于Flutter生命周期小結(jié)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!