flutter 聲明周期相關(guān) 整體梳理

一個element 的創(chuàng)建從 inflateWidget 開始

1 調(diào)用 inflateWidget 
  1.1第一次創(chuàng)建 會走element 的mount     newChild.mount(this, newSlot);
  1.2 在 mount 方法中 除了公共邏輯,不同的子類有不同的處理邏輯,這里只說ComponentElement,因為StatefulElement 是它的子類。
  1.3 ComponentElement.mount() 調(diào)用了_firstBuild() ,在_firstBuild 中調(diào)用了rebuild()。
  1.4 StateFulElement 重寫了_firstBuild(), 分別調(diào)用了state.initState() state. didChangeDependencies();
   1.5 走rebuild() ->performRebuild(),針對不同的子類performRebuild()處理邏輯不一樣,這里只看StatefulElement->ComponentElement().
       在ComponentElement 的performRebuild 中會調(diào)用 build() ,不同的子類實現(xiàn)不一致,針對StatefulElement 就是調(diào)用 state.build() ,對于StatelessElement 就是調(diào)用 Widget.build().

至此 對于 StateFulWidget 的state 的聲明周期調(diào)用如下 initState ->didChangeDependencies->build()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容