【 Flutter 】Flutter を 基礎 から 学習 ( Flutterの内部構造 ) part215 ライフサイクル

基礎 から 学ぶ Flutter 」という書籍で  学習 したことを ブログでアウトプットしていこうと思います。今回は Flutterの内部構造 ( part215 )です。

前回

【 Flutter 】Flutter を 基礎 から 学習 ( Flutterの内部構造 ) part214 ライフサイクル

引き続き、ライブラリについて学びます。

ライフサイクル

StatelessWidget

StatelessWidgetbuildに関する続きです。

StatelessWidgetbuildメソッドが呼び出されるのは・・・

Element#inflateWidget → ComponentElement#mount → ComponentElement#_firstBuild → Element#rebuild → ComponentElement#performRebuild(built = build();)

で晴れてめでたくStatelessWidgetbuildメソッドが呼び出されるようです。かなり長い道のりですね。
このbuildまでの間にElementツリーに自身の影武者であるStatelessElementを追加したりdElementクラスなどの親クラスが下処理したりと大変そうです。
この下処理のことをinitialと呼んでいるのでしょうか。

ライフサイクル

StatelessWidgetの状態は2つだけです。

  • buildメソッドが呼び出される前(initial状態)
  • buildメソッドが呼び出された後(active状態)

initialからactiveに状態が変わった後はずっとactiveのままとなります。
状態は変わりません。なのでStatelessWidgetはimmutableということになります。

再描画される契機はホットリロード(ressembleメソッド呼び出し)が行われ、エレメントの再構築が行われた場合のみです。
それ以外で再描画されることはないのです!

最後に

buildメソッド呼び出し前後で状態が変わるだけ・・・を説明するために内部ソースの説明をしたということでしょうかね。
私にはちょっとわかりませんでした。

今日はここまで!