flutter 声明周期相关 整体梳理

一个element 的创建从 inflateWidget 开始

1 调用 inflateWidget 
  1.1第一次创建 会走element 的mount     newChild.mount(this, newSlot);
  1.2 在 mount 方法中 除了公共逻辑,不同的子类有不同的处理逻辑,这里只说ComponentElement,因为StatefulElement 是它的子类。
  1.3 ComponentElement.mount() 调用了_firstBuild() ,在_firstBuild 中调用了rebuild()。
  1.4 StateFulElement 重写了_firstBuild(), 分别调用了state.initState() state. didChangeDependencies();
   1.5 走rebuild() ->performRebuild(),针对不同的子类performRebuild()处理逻辑不一样,这里只看StatefulElement->ComponentElement().
       在ComponentElement 的performRebuild 中会调用 build() ,不同的子类实现不一致,针对StatefulElement 就是调用 state.build() ,对于StatelessElement 就是调用 Widget.build().

至此 对于 StateFulWidget 的state 的声明周期调用如下 initState ->didChangeDependencies->build()

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容