Navigation作為路由容器,其生命週期承載在NavDestination元件上,以元件事件的形式開放。其生命週期大致可分為三類,自定義元件生命週期、通用元件生命週期和自有生命週期。其中,aboutToAppear和aboutToDisappear是自定義元件的生命週期(NavDestination外層包含的自定義元件),OnAppear和OnDisappear是元件的通用生命週期。剩下的六個生命週期為NavDestination獨有。生命週期時序如下圖所示
- aboutToAppear:在建立自定義元件後,執行其build()函式之前執行(NavDestination建立之前),允許在該方法中改變狀態變數,更改將在後續執行build()函式中生效。
- onWillAppear:NavDestination建立後,掛載到元件樹之前執行,在該方法中更改狀態變數會在當前幀顯示生效。
- onAppear:通用生命週期事件,NavDestination元件掛載到元件樹時執行。
- onWillShow:NavDestination元件佈局顯示之前執行,此時頁面不可見(應用切換到前臺不會觸發)。
- onShown:NavDestination元件佈局顯示之後執行,此時頁面已完成佈局。
- onWillHide:NavDestination元件觸發隱藏之前執行(應用切換到後臺不會觸發)。
- onHidden:NavDestination元件觸發隱藏後執行(非棧頂頁面push進棧,棧頂頁面pop出棧或應用切換到後臺)。
- onWillDisappear:NavDestination元件即將銷燬之前執行,如果有轉場動畫,會在動畫前觸發(棧頂頁面pop出棧)。
- onDisappear:通用生命週期事件,NavDestination元件從元件樹上解除安裝銷燬時執行。
- aboutToDisappear:自定義元件析構銷燬之前執行,不允許在該方法中改變狀態變數。