仕組みとしては、ProviderやRiverpodと同じく最親WidgetにInheritedWidgetを配置し、その配下であればInheritedWidgetが状態管理しているというもの。ProviderやRiverpod把握していればすんなりと理解!(というか、InheritedWidgetを参考にProviderやRiverpodが出来てるけど、、)
InheritedWidget使う上での要点
InheritedWidgetはそれを継承し、updateShouldNotify()を定義すれば実態はOK
State管理の為、StatefulWidgetを組み合わせる。Stateのbuild()内でInheritedWidgetを返却する
ofコンストラクタを定義することで、Presenter層からのデータ参照/更新の呼び出しが簡潔に書ける
StatefulWidgetのコンストラクタに引数を指定することで、mock作成も可能
dependOnInheritedWidgetOfExactType → rebuildする
getElementForInheritedWidgetOfExactType → rebuildしない
使ってみた感想
ProviderやRiverpodの使いやすさに感謝。今回はstateを1種類のみで利用していたが、これが実プロジェクトと考えるととても採用は出来ない、、
mock作成の情報がネット上探しても見当たらずにちょっと躓いた