Closed1
【Flutter】Builder
のメモ
Builderを使う目的
同一のbuild method内で、
子Widgetが親WidgetのBuildContextを参照するようなコードを書く場合動かなくなる。
通常は
inherited widget,
Scaffold,
Navigator,
ThemeData,
MediaQuery 、
また、stateを管理しているWidget(Provider, Provider.of)
などで使う。
Builderをどのような場面で使うのか。
こういう状況になっているかどうかの判断は 同じbuild()内で作られているWidgetで、.of()を使っているかどうかでできる。(Provider.of()とか)
これを解決するには
子のWidgetツリーを自身のbuildメソッドとともに、別の独立Widget に分けることだが、Widgetにするには小さすぎる場合はBuilderでラップすれば良い。
Builderの動作の解説
Builderは親Widgetが完全にBuildされてから、子Widgetが親のBuildContextを参照できる様にする。
Builder Widgetのbuild関数が呼び出されると、子のWidget treeが構築されるが、
独立Widgetを作成しても、全く同様に子のWidget treeが作成される。
Builderウィジェットは シンプルで必要な時に 最新のビルドコンテキストにしてくれます
このスクラップは2022/03/07にクローズされました