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

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

前回

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

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

ライフサイクル

StatefulWidget

StateクラスのdidChangeDependenciesメソッド

initStateメソッド内では使用できないcontextを使用する場合にオーバーライドするようです。
ん?前回のinitStateメソッドの説明では本書は以下のように記述していました。

エレメントツリーに追加した後なので、BuildContextクラスを使えそうです。

結局initStateメソッドではcontextは使えないのでしょうか🤔

didChangeDependenciesメソッドが呼び出されるタイミングは2か所あります。

  • initStateが呼び出された直後
    おそらくこれはStatefulElement#_firstBuildのstate.didChangeDependencies();の部分ではないかと思います。
  • InheritedWidgetクラスが先祖にいる かつ dependOnInheritedWidgetOfExactTypeメソッドを呼び出したStateクラス。
    こちらはStateクラスのどこかでdependOnInheritedWidgetOfExactTypeを呼び出すとdidChangeDependenciesが実行されるよ。と、言いたいようです。

最後に

dependOnInheritedWidgetOfExactTypeを使うと何が実現できるのでしょうか。

今日はここまで!