一、初始化時期
1、createState
///構建一個StatefulWidget時,會立即調用該方法(必須重寫)
@override
_WidgetLifecycleState createState() => _WidgetLifecycleState();
2、initState
/// 在創建widget時調用的除構造方法外的第一個方法
/// 在這個方法中通常會做一些初始化工作,比如channel的初始化,監聽器的初始化等
@override
void initState(){
super.initState();
}
二、更新時期
1、didChangeDependencies
///當依賴的State對象改變時會調用
///1、在第一次構建widget時,在initState()之后立即調用此方法
///2、 如果StatefulWidgets依賴與InheritedWidget,那么當當前State所依賴InheritedWidget中的變量改變時會再次調用它
@override
void didChangeDependencies() {
super.didChangeDependencies();
}
2、build
///這是應用必須實現的方法,頁面所要呈現的內容就在此了
///它會在didChangeDependencies()方法之后調用
///另外當調用setState()后也會再次調用該方法
@override
Widget build(BuildContext context) {
return Container();
}
3、didUpdateWidget
///這個生命周期方法使用的時候很少,只當父組件需要重繪時才會調用
@override
void didUpdateWidget(WidgetLifecycle oldWidget) {
super.didUpdateWidget(oldWidget);
}
三、銷毀期
1、deactivate
///這個也很少使用,只在組件被移除時調用,並在dispose()之前調用
@override
void deactivate() {
super.deactivate();
}
2、dispose
///該生命周期方法很常用,一旦組件被銷毀就會調用:
///通常在該方法中執行一些資源的釋放工作比如,監聽器的卸載,channel的銷毀等操作
@override
void dispose() {
super.dispose();
}