Flutter入門 | Widgetの基本!! - mohumohu studio

mohumohu studio

           

みずきの技術&読書ブログ&無料ゲーム

プロフィール画像

Flutter入門 | Widgetの基本!!

今回は公式ドキュメントをもとにFlutterのUI を構成する各要素のWidgetの基本について解説していきたいと思います!!


目次

  1. Widgetとは
  2. Widgetの構成
  3. Widgetの構築
  4. Widgetの状態
  5. まとめ

Widgetとは

FlutterはよくすべてがWidgetであるといわれます。

WidgetとはFlutter アプリのユーザー インターフェースの構成要素であり、各Widgetはユーザー インターフェースの一部です。

Widgetは、構成に基づいて階層を形成します。各Widgetは親の中にネストされ、親からコンテキストを受け取ることができます。この構造は、次の簡単な例に示すように、ルートの Widgetまで続きます。


Widgetの構成

前述のように、Flutter はWidgetを構成単位として重視しています。Widgetは通常、他の多くの小さな単一目的のWidgetで構成され、それらを組み合わせることで強力な効果を生み出します。

前の例のコードを実行すると、Flutter は画面の中央に「Hello, World!」というテキストが垂直に並んだボタンを描画します。これらの要素を配置するために、Center, 使用可能なスペースの中央に子要素を配置するWidgetと、Column, 子要素を次々に垂直に並べるWidgetがあります。


Widgetの構築

Flutter でユーザー インターフェイスを作成するには、
build Widgetオブジェクトのメソッドをオーバーライドします。すべてのWidgetには build メソッドが必要であり、別のWidgetを返す必要があります。たとえば、画面にpadding付きのテキストを追加する場合は、次のように記述します。

フレームワークは、このbuild Widgetが作成されたとき、およびこのWidgetの依存関係 (Widgetに渡される状態など) が変更されたときに、メソッドを呼び出します。このメソッドは、すべてのフレームで呼び出される可能性があります。


Widgetの状態

このフレームワークでは、StatefulWidgetStatelessWidgetという 2 つの主要なWidget クラスが導入されています。

可変状態を持たないWidget (時間の経過とともに変化するクラス プロパティを持たないWidget) は StatelessWidgetのサブクラスです。 
PaddingTextIcon などの多くの組み込みWidgetはステートレスです。

独自のWidgetを作成する場合、ほとんどの場合はStatelessWidgetを作成します。

一方、Widgetの固有の特性がユーザーの操作やその他の要因に基づいて変更する必要がある場合、そのWidgetは状態を持ちます。たとえば、Widgetにユーザーがボタンをタップするたびに増加するカウンターがある場合、カウンターの値はそのWidgetの状態です。その値が変化すると、Widgetを再構築して UI の一部を更新する必要があります。これらのWidgetはStatefulWidget のサブクラスであり、(Widget自体は不変であるため) Stateのサブクラスである別のクラスに可変状態を格納します。StatefulWidgetには buildメソッドがありません。代わりに、以下の例に示すように、そのユーザー インターフェイスはStateオブジェクトを通じて構築されます。

オブジェクトを変更するたびにState(たとえば、カウンターを増やすことによって)、 setStateを呼び出して、Statebuildメソッドを再度呼び出してフレームワークにユーザー インターフェイスを更新するように通知する必要があります。

Widget オブジェクトから状態を分離すると、他のWidgetは状態を失うことを気にすることなく、状態のないWidgetと状態のあるWidgetの両方をまったく同じように扱うことができます。状態を保持するために子を保持する必要がなく、親は子の永続的な状態を失うことなく、いつでも子の新しいインスタンスを作成できます。フレームワークは、適切な場合に既存の状態オブジェクトを見つけて再利用するすべての作業を実行します。


まとめ

今回はWidgetについて解説していきました!!

いかがだったでしょうか?

細かいところが理解できなくても何となくざっと理解していただければ大丈夫です。

次回からレイアウトを作成し、その中身について詳しく見ていきます!!

良きFlutterライフを!!

2025-02-25

0件のコメント

コメントはまだありません。最初の一人になりましょう!

コメントを残す

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