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

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

前回

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

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

ライフサイクル

StatefulWidget

StateのsetStateメソッド

StatfulWidgetクラスの真骨頂!と本書では記述されるほど大事なメソッドになります。

setStateメソッドが呼び出された後buildメソッドが実行され、画面が再描画する仕組みとなっています。

本書では以下のような謎な文章があります。

自分ではsetState()を呼び出さず、また自身が作成するウィジェットをすべてStatelessWidgetクラスで作ることも可能です。

その場合は、それらのウィジェットがStatefulWidgetクラスを継承していて、内部でsetState()メソッドを読んでいるのです。

つまり、Stateクラス内の値を変更したい場合は、必ずsetState()メソッドが呼ばれています。

最初の1文はりかいできますが2文目以降はどういうことでしょうか。

StatelessWidgetStatefulWidgetの子供・・・という解釈であっているでしょうか。

setStateメソッド内では引数で渡された関数を実行したのちElementクラスのmarkNeedsBuildメソッドが呼び出されています。
markNeedsBuild内ではエレメントツリーに追加されているか確認ののち、リビルドが必要なのかどうか判断します。
必要な場合はBuildOwnerクラスのscheduleBuildForメソッドを呼び出しています。

最後に

setStateメソッドの旅はまだ続くようです。

力の入れ方がここだけ異常です(笑