Flutter Widget生命週期

講到生命週期,Android主要是Activity的生命週期,對Flutter來說,萬物皆是widget,生命週期是解決一些問題的基礎。

StatefulWidget常見的場景,StatelessWidget生命週期只有一個build。

1.新打開widget A

A createState ---> A initState --->A didChangeDependencies --->A build

2.widget A切換 widget B

B createState ---> B initState --->B didChangeDependencies --->B build ---> A deactivate ---> A build

3. widget B退出 返回widget A

A deactivate ---> A build---> B deactivate ---> B dispose

4.widget A hot reload 熱重載

A didUpdateWidget ---> A build

5.widget A setState

A build


簡單介紹下

createState 創建組件狀態 只調用一次

initState 初始化組件狀態 只調用一次

didChangeDependencies 改變組件依賴關係 initState 時會調用,除此之外,如同其名,在改變依賴關係時,才會再次調用。當StatefulWidget依賴的InheritedWidget發生變化時,didChangeDependencies 才會調用。didChangeDependencies方法調用不僅一次。

(備註:InheritedWidget 組件間傳遞數據)

build 創建組件 多次調用,如果棧內有多個widget,當再次跳轉界面時,棧內未銷燬的widget全部都會執行一遍deactivate ---> build。

didUpdateWidget 更新組件,熱更新hot reload必會調用,按道理使用setState方法,子widget會調用該方法。多次調用。

deactivate 解除 組件被移除時調用,多次調用。

dispose 銷燬 組件被銷燬時調用,只調用一次。


分享到:


相關文章: