Open1

【学習】Widgetライフサイクルの基礎 (Widget / Element / RenderObject)

げんげん

これが一番わかりやすい
https://www.youtube.com/watch?v=_gIbneld-bw

4:18~ Widget / Element / RenderObjectの関係

  • Widgetは画面描画に使用されず、実際に使用されるのはRenderObject
  • WidgetからElementが生成され、ElementからRenderObjectが生成される
  • RenderObjectを生成できるWidgetは決まっており、StatelessWidget/StatefulWidgetはRenderObjectを生成しない

9:14~ StatelessWidget / StatefulWidgetとRenderObjectの違い

  • StatelessWidget/StatefulWidgetは描画をする目的よりも他のWidgetをまとめる様な目的で使用される
  • イメージとしてはRenderObjectは具体的に実装が決まっており、Stateless(ful)WidgetはどのRenderObjectを組み合わせて使うかという抽象的なもの

10:35~ 各Widgetを継承して作られているWidget

StatelessWidget

  • ハイレベルの抽象的なWidgetが多い → そのままレンダリングされない

StatefulWidget

  • 同様にハイレベルの抽象的なWidget

RenderObjectWidget

  • 低レベルの部品に近い様な具体的なオブジェクト → そのままレンダリングされる

11:45~ ※重要 Widgetがどの様にRenderObjectを生成するか

  • ハイレベルのオブジェクトはビルド時にRenderObjectWidgetに変換され、それが描画に使用される