熟悉Flutter中StatefulWidget的生命週期十分重要

熟悉Flutter中StatefulWidget的生命週期十分重要

StatefulWidget同樣繼承自Widget,與StatelessWidget不同的是,StatefulWidget是有狀態部件,可以通過createState()創建State狀態,通過setState()修改狀態。

在iOS開發中,應用程序(App)和視圖控制(UIViewController)的生命週期函數對於開發者而言十分重要,因為不同的工作需要放置到不同生命週期階段去做,因此所有iOS開發者十分必要熟悉一下生命週期。

Flutter開發中同樣需要熟悉StatefulWidget的生命週期。它主要交給State對象管理,下面將幾個生命週期階段介紹給大家。

State生命週期

  • initState()

Widget初次加載時生成一個State對象,並調用該方法。

對於只需操作一次的事情,可以放置到該方法中,比如:狀態初始化、訂閱事件等。

  • build()

該方法用於構建Widget樹,當觸發一下方法時,會回調該方法。

① initState()

② didUpdateWidget()

③ setState()

④ didChangeDependencies()

  • didUpdateWidget()

點擊熱重載(Hot Reload)按鈕時,Widget會重新構建,Flutter框架調用Widget中的canUpdate()方法,判斷是否需要重新繪製某個節點樹,如果需要重新繪製,則回調該方法。

查看源碼可以發現,canUpdate()方法中,對比新舊Widget的runtimeType和key是否相等,來決定是否需要重新繪製。

  • deactivate()

State對象被從樹中移除時會回調該方法。

  • dispose()

State對象被從樹中永久移除時會回調該方法,在deactivate()之後調用。

可以在該方法中進行內存清理等操作。

  • reassemble()

點擊熱重載(Hot Reload)按鈕時,會調用該方法,但是發佈(Release)模式下不會調用

  • didChangeDependencies()

State對象的依賴發生變化時,會調用該方法。比如應用主題更改時。

結語

工欲善其事必先利其器,對於有狀態部件的生命週期有一個整體的瞭解,才能開發出更加健壯的應用程序。大家請打開自己的IDE,在以上回調函數中進行打印和運行,and print, annnnnnd run!!!以便加深印象,畢竟實踐出真理嘛。

歡迎轉發,歡迎收藏,歡迎關注『郝先生談技術』


分享到:


相關文章: