iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0

State生命週期

State 的生命週期是指 StatefuleWidget 中的 State 從創建至消滅中間的過程,在這過程中存在多個不同階段的 Hooks,我們可以在這些接口上實作想要的行為。

State Hooks

  • createState()

StatefulWidget原始碼追蹤 StatefulWidget 實體化的過程:

  1. StatefulWidget 會先透過 createElement 產生 StatefulElement
  2. StatefulElement 調用 StatefulWidgetcreateState 方法產生對應的 State 物件。
  • initState()

State 創建時會去呼叫 initState 方法。

=> 通常會在這個階段進行State資料初始化的動作。

  • didChangeDependencies()

StatefulWidget 有使用來自InheritedWidget的資料時會觸發。

=> InheritedWidget 可以讓組件存取來自 Widget Tree 上層定義的資料,因此當上層資料有異動時會觸發這個 hook。

  • build()

=> 同 StatelessWidget build 方法,用來定義UI的配置設定。

  • reassemble()

開發中使用 debug 模式時,在觸發 Hot Reload 時會呼叫該函數

=> 可以用來 debug 狀態是否正常。

  • didUpdateWidget()

當呼叫 setState 後,StatefulWidget 內部會檢查是否發生異動並觸發 didUpdateWidget

  • deactivate()

當組件節點即將被 Element Tree 移除時會被呼叫。

  • dispose()

當組件節點被 Element Tree 移除後,若後續沒有確認不會在使用則觸發此方法並釋放占用的資源。

生命週期 Hooks

參考《Flutter实战》圖3.2 重新繪制成彩色版

state_lifecycle

小結

我們可以從昨日的 練習成果 理解整個生命週期的過程。


上一篇
Flutter體驗 Day 6-Widget State
下一篇
Flutter體驗 Day 8-開始玩積木
系列文
Flutter / Dart 跨平台App開發體驗30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言