1. 程式人生 > 其它 >Flutter State生命週期

Flutter State生命週期

  • initState:當 widget 第一次插入到 widget 樹時會被呼叫,對於每一個State物件,Flutter 框架只會呼叫一次該回調,所以,通常在該回調中做一些一次性的操作,如狀態初始化、訂閱子樹的事件通知等。

  • didChangeDependencies():當State物件的依賴發生變化時會被呼叫;

  • build():它主要是用於構建 widget 子樹的,會在如下場景被呼叫:

    1. 在呼叫initState()之後。
    2. 在呼叫didUpdateWidget()之後。
    3. 在呼叫setState()之後。
    4. 在呼叫didChangeDependencies()之後。
    5. 在State物件從樹中一個位置移除後(會呼叫deactivate)又重新插入到樹的其它位置之後。
  • reassemble():此回撥是專門為了開發除錯而提供的,在熱過載(hot reload)時會被呼叫,此回撥在Release模式下永遠不會被呼叫。

  • didUpdateWidget ():在 widget 重新構建時,Flutter 框架會呼叫widget.canUpdate來檢測 widget 樹中同一位置的新舊節點,然後決定是否需要更新,如果widget.canUpdate返回true則會呼叫此回撥。正如之前所述,widget.canUpdate會在新舊 widget 的 key 和 runtimeType 同時相等時會返回true,也就是說在在新舊 widget 的key和runtimeType同時相等時didUpdateWidget()

    就會被呼叫。

  • deactivate():當 State 物件從樹中被移除時,會呼叫此回撥。在一些場景下,Flutter 框架會將 State 物件重新插到樹中,如包含此 State 物件的子樹在樹的一個位置移動到另一個位置時(可以通過GlobalKey 來實現)。如果移除後沒有重新插入到樹中則緊接著會呼叫dispose()方法。

  • dispose():當 State 物件從樹中被永久移除時呼叫;通常在此回撥中釋放資源。