Everything is a Widget|いちから始めるFlutterモバイルアプリ開発

Widget とツリー構造

Flutterでアプリを作るときに、超大事なのがWidget(ウィジェット)

Widgetとは、FlutterにおいてUIを構成する各要素のことです。

ボタンやテキスト、画像みたいな画面に出てくるモノはもちろん、レイアウトの配置やスクロール、アニメーションの効果まで、すべて「Widget」でできています!

そして、このWidgetたちはツリー構造になってつながっています。

どういうことかというと、Widgetは他のWidgetを中に入れられる仕組みになっていて、

たとえば、「画面全体」というWidgetの中に、「横に並べる」Widgetを入れて、その中に「縦に並べる」Widgetを入れて、その中に「テキスト」と「ボタン」のWidgetを並べて…という風に、積み重ねるようにUIを組み立てます!

Group 8 (1).png

サンプルアプリの以下の画面を例に見てみよう!

スクリーンショット 2025-05-04 21.45.32.png

この UI を構成する Widget ツリーの定義は以下のようになっています。

code.png

こちらの記述ではScaffold Widget の子要素としてappBarbodyfloatingActionButtonのフィールドにそれぞれ Widget ツリーが指定されています。

appBarにはAppBarTextからなる widget ツリー、

bodyにはCenterColumn→ 2つのTextからなる Widget ツリー、

floatingActionButtonにはFloatingActionButtonIconからなる Widget ツリーが指定されています。

これを図式化すると以下のようツリー構造になります。

Group 29.png