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