2020/3/7 Flutter BuildContext class

ウィジェットツリーの中での「ウィジェットの位置」を扱うクラス。

このクラスは、StatelessWidget.buildメソッドと、Stateオブジェクトのメソッドから使用できるメソッドを提供します。

BuildContextオブジェクトは(StatelessWidget.buildメソッドのような)WidgetBuilder関数に渡され、State.contextのメンバから利用できます。いくつかのスタティック関数(例えばshowDialogやTheme,ofなど)もまた、ウィジェットを呼び出す代わりの振る舞いのため、あるいは受け取ったcontextからデータを得るためにbuildcontextを受け取ります。

それぞれのウィジェットが自分のBuildContextを持っています。そしてそのBuildContextは、StatelessWidget.buildやState.build関数が返すウィジェットの親ウィジェットです。(そして工事中🏗)


In particular, this means that within a build method, the build context of the widget of the build method is not the same as the build context of the widgets returned by that build method.

特に、buildメソッド内で、

「buildメソッドのウィジェットのbuildcontext」

は、

「そのbuildメソッドから返されるウィジェットのbuildcontext」

とは同じではありません。

これはいくつかのトリッキーなケースに導きます。例えば、Theme.of(context)は、受け取ったbuildcontextの直近の囲まれたテーマ(Theme)を探します。もしウィジェットQのbuildメソッドが、Qが返すウィジェットツリー内にThemeを含んでいるのなら、そして自分のcontextを渡してTheme.ofを実行しようとしたなら、QのbuildメソッドはそのThemeオブジェクトを見つけることができません。代わりにウィジェットQの祖先の何らかのThemeを見つけます。

 

 

 

参考

https://api.flutter.dev/flutter/widgets/BuildContext-class.html

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です