はじめに
didChangeDependencies
は、FlutterのStatefulWidgetのライフサイクルメソッドの一つで、ウィジェットが依存するデータが変わった際に呼び出されます。これは、主にInheritedWidget
などの依存関係に基づいた更新を検知します。
メモとして簡単にまとめたため、詳しく知りたい方はこちらをご覧ください。もし他に良い方法や改善点があれば、ぜひコメントいただけると幸いです。
呼ばれるタイミング
-
initState
の直後: 初期化が完了するとすぐに呼ばれます。 -
依存する
InheritedWidget
の変更時: ウィジェットが依存しているデータ(例えばテーマやグローバル設定)が変更された場合に再度呼ばれます。
使いどころ
- 通常は
build
メソッドが依存関係の変更を検知しますが、重い処理(ネットワークリクエストなど)をbuild
で行うとパフォーマンスが悪化する可能性があるため、一度だけ実行したい処理をdidChangeDependencies
で処理することが推奨されます。
簡単な例
@override
void didChangeDependencies() {
super.didChangeDependencies();
// 初回依存データのセットアップや重い処理
fetchData(); // 例: APIリクエスト
}
まとめ
- 依存関係の変化をキャッチするメソッド
-
initState
直後と、InheritedWidget
の変更に反応します。 -
パフォーマンスを改善するために、
build
で行うべきでない重い処理をここで実行します。
これにより、アプリが効率的に依存データを扱い、不要な再構築を防ぐことができます。