Flutterではどのウィジェットにもbuildメソッドが存在します。buildメソッドの引数には常にBuildContext型のcontext変数を受け取っています。
build段階でcontextを使うと、実装すべきbuildメソッドを持つウィジェットが親ウィジェットやそれより上にある情報をcontextを通じて取得できます。
ex) Provider.of(context), Theme.of(context), Scaffold.of(context), Navigator.of(context), MediaQuery.of(context) など探したいウィジェットをWidget treeという方式でtreeデータ構造を使い、そのウィジェットの位置から親を遡って巡回しながら目的のウィジェットを検索します。
build関数の実行が終わって返されると、そのウィジェットはcontextに登録され、それ以降他のウィジェットから見つけられるようになります。

Flutterでウィジェットを画面に描画するために処理される順序
Widget -> Element -> RenderObject -> Canvas
クラスにWidgetという単語があるか、そのような名前を持つオブジェクトを継承していればウィジェットツリーで実装されます。
クラスにElementという単語があるか、そのような名前を持つオブジェクトを継承していればエレメントツリーで実装されます。
クラスにRenderObjectという単語があるか、そのような名前を持つオブジェクトを継承していればレンダーツリーで実装されます。
buildメソッドが呼ばれるケース
- initStateを呼び出した後
- didUpdateWidgetを呼び出した後
- setStateが呼ばれた後
- Stateオブジェクトが変更された後
- Stateオブジェクトが非アクティブになり、ツリーの別の位置に再挿入された後
Flutterアニメーションの原理はこちらのリンクが参考になります。Turing Apple & Flutter Seoul
To be of use to the world is the only way to be happy.
— Hans Christian Andersen