はじめに
FlutterでUIを構築する際、まず理解しておくべき重要なコンポーネントがStatelessWidget
です。StatelessWidget
は、状態を持たないWidgetを作成するために使用されます。本記事では、StatelessWidget
の基本的な使い方と、その役割について詳しく解説します。前回のFlutter入門開発はこちらです。
StatelessWidgetとは
StatelessWidget
は、その名の通り「状態(state)」を持たないウィジェットです。表示される内容が一度決まると、その内容が変化しないため、再描画や再構築が必要ないシンプルなUIコンポーネントに使用されます。
例えば、テキストや画像を表示するためのWidgetは、ユーザーの操作に応じて変化する必要がないため、StatelessWidget
として実装されることが一般的です。
StatelessWidgetの基本構造
StatelessWidget
を使って簡単なアプリケーションを作成する例を見てみましょう。
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('StatelessWidget Example'),
),
body: Center(
child: MyStatelessWidget(),
),
),
);
}
}
class MyStatelessWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const Text(
'Hello, Tech Grow Up!',
style: TextStyle(fontSize: 24, color: Colors.blue),
);
}
}
解説
MyApp
クラス:StatelessWidget
を使って、アプリ全体の構成を定義しています。MaterialApp
をルートとして、Scaffold
で基本的なアプリケーションレイアウトを提供します。MyStatelessWidget
クラス: このクラスがStatelessWidget
の具体的な実装部分です。build
メソッド内で、テキストウィジェットを表示するだけのシンプルなUIを構築しています。
この例では、画面中央に「Hello, Tech Grow Up!」というテキストが青色で表示されます。テキストや色のプロパティは固定されており、ユーザーの操作によって変化しません。
StatelessWidgetの活用シーン
StatelessWidget
は、以下のようなシーンで効果的に活用されます。
- シンプルなUI要素の作成: 複雑な状態管理が不要な場合、
StatelessWidget
を使うことで、コードをシンプルに保つことができます。 - 静的コンテンツの表示: テキスト、画像、アイコンなど、ユーザーの操作に応じて変化しないコンテンツの表示に適しています。
- デザインの再利用: 繰り返し使用される固定のレイアウトやスタイルを、
StatelessWidget
としてまとめることで、コードの再利用性を高めることができます。
StatefulWidgetとの違い
StatelessWidget
が「状態を持たない」ウィジェットであるのに対して、StatefulWidget
は「状態を持つ」ウィジェットです。StatefulWidget
では、ユーザーの操作やデータの変更に応じてUIが再構築されるため、インタラクティブなコンポーネントに使用されます。
例えば、ボタンをクリックした際に表示される内容が変わる場合や、チェックボックスの状態が変わる場合は、StatefulWidget
を使用します。
StatelessWidgetを選ぶべき場合
- 固定されたデータの表示: 一度表示されたら変わらないデータ(例:記事の見出し、ロゴ、ラベル)を表示する場合。
- 単純なデザインの再利用: 複雑なロジックを含まないUIパーツを再利用する場合。
まとめ
StatelessWidget
は、シンプルで軽量なUIコンポーネントを作成するために不可欠なクラスです。状態管理が不要な部分では、StatelessWidget
を活用することで、コードの保守性とパフォーマンスを向上させることができます。Flutterを始めたばかりの方も、まずはこのStatelessWidget
から学び、その後で状態を持つStatefulWidget
を学ぶと良いでしょう。
コメント