一、Widget生命周期階段
flutter生命周期大體上可以分為三個階段:初始化、狀態變化、銷毀。
1.初始化階段
對應執行構造方法和initState時候
2.狀態變化階段
開新的widget或者調用setState方法的時候
3.銷毀階段
deactivate 和 dispose
生命周期階段執行的函數
1.initState
調用次數:1次
插入渲染樹時調用,只調用一次,widget創建執行的第一個方法,這里可以做一些初始化工作,比如初始化State的變量。
2.didChangeDependencies
調用次數:多次
初始化時,在initState()之后立刻調用
當依賴的InheritedWidget rebuild,會觸發此接口被調用
實測在組件可見狀態變化的時候會調用
3.build
調用次數:多次
初始化之后開始繪制界面
setState觸發的時候會
4.didUpdateWidget
調用次數:多次
組件狀態改變時候調用
5.deactivate
當State對象從樹中被移除時,會調用此回調,會在dispose之前調用。
頁面銷毀的時候會依次執行:deactivate > dispose
6.dispose
調用次數:1次
當State對象從樹中被永久移除時調用;通常在此回調中釋放資源。
7.reassemble
在熱重載(hot reload)時會被調用,此回調在Release模式下永遠不會被調用
二、App生命周期
通過WidgetsBindingObserver的didChangeAppLifecycleState 來獲取。通過該接口可以獲取是生命周期在AppLifecycleState類中。
1.resumed
可見并能響應用戶的輸入,同安卓的onResume
2.inactive
處在并不活動狀態,無法處理用戶響應,同安卓的onPause
3.paused
不可見并不能響應用戶的輸入,但是在后臺繼續活動中,同安卓的onStop
下面是生命周期:
初次打開widget時,不執行AppLifecycleState的回調;
按home鍵或Power鍵, AppLifecycleState inactive---->AppLifecycleState pause
從后臺到前臺:AppLifecycleState inactive--->ApplifecycleState resumed
back鍵退出應用: AppLifecycleState inactive--->AppLifecycleState paused
引用:flutter生命周期