Widget的生命周期
-
StatelessWidget
StatelessElement createElement() Widget build(BuildContext context)
-
StatefulWidget
image.pngvoid initState() void didChangeDependencies() Widget build(BuildContext context) void reassemble() void didUpdateWidget(LifeCyclePage oldWidget) void deactivate() void dispose()
App的生命周期
App的生命周期需要通過WidgetsBindingObserver的didChangeAppLifecycleState來獲取炭菌,在initState中添加監(jiān)聽WidgetsBinding.instance.addObserver(this);
resumed:可見并能響應(yīng)用戶的輸入
inactiv:處在并不活動(dòng)狀態(tài)桶蝎,無法處理用戶響應(yīng)
paused:不可見并不能響應(yīng)用戶的輸入明郭,但是在后臺(tái)繼續(xù)活動(dòng)中
class LifeCyclePageAState extends State<LifeCyclePageA> with WidgetsBindingObserver {
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state) {
case AppLifecycleState.resumed:
print("app resumed");
break;
case AppLifecycleState.inactive:
print("app inactive");
break;
case AppLifecycleState.paused:
print("app paused");
break;
case AppLifecycleState.detached:
print("app detached");
break;
}
super.didChangeAppLifecycleState(state);
}
@override
void initState() {
print("initState A");
WidgetsBinding.instance.addObserver(this);
super.initState();
}
省略其他代碼...
}
推到后臺(tái)再回到前臺(tái)打印如下
image.png