Closed1

【Flutter】Builder

Ryouhei FurugenRyouhei Furugen

https://www.youtube.com/watch?v=xXNOkIuSYuA

のメモ

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にクローズされました