カテゴリ: FlutterのUI開発 更新日: 2025/12/17

Flutterの基本レイアウトウィジェットの使い方!Column・Row・Stackを初心者向けに解説

270
Flutterの基本レイアウトウィジェット(Column・Row・Stack)の使い方

先生と生徒の会話形式で理解しよう

生徒

「Flutterで画面を縦や横に並べたいときって、どうすればいいんですか?」

先生

「Flutterでは、ColumnRowというウィジェットを使えば、縦や横に簡単に要素を並べられますよ。」

生徒

「あと、複数のウィジェットを重ねて表示したいこともあるんですけど、それはできますか?」

先生

「その場合はStackというウィジェットが便利です。今回はFlutterの基本レイアウトウィジェットの使い方を見ていきましょう!」

1. Flutterのレイアウトウィジェットとは?

1. Flutterのレイアウトウィジェットとは?
1. Flutterのレイアウトウィジェットとは?

Flutter(フラッター)では、ユーザーインターフェース(UI)を構築するためにレイアウトウィジェットを使用します。画面に文字やボタンを並べたり、重ねたりするために必要不可欠な機能です。Flutterのレイアウトウィジェットには様々な種類がありますが、特にColumnRowStackの3つは初心者が最初に覚えるべき基本中の基本です。

2. Columnウィジェットの使い方(縦に並べる)

2. Columnウィジェットの使い方(縦に並べる)
2. Columnウィジェットの使い方(縦に並べる)

Columnウィジェットは、子ウィジェットを縦方向に並べたいときに使います。Flutterで画面に要素を縦並びで表示したいときには、ほぼ必ず使うウィジェットです。


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: Text('Columnウィジェット')),
        body: Column(
          children: [
            Text('上のテキスト'),
            ElevatedButton(onPressed: () {}, child: Text('ボタン')),
            Text('下のテキスト'),
          ],
        ),
      ),
    );
  }
}

この例では、3つのウィジェットが縦に並んでいます。childrenの中に複数のウィジェットをリスト形式で記述するだけで縦並びレイアウトが完成します。

3. Rowウィジェットの使い方(横に並べる)

3. Rowウィジェットの使い方(横に並べる)
3. Rowウィジェットの使い方(横に並べる)

Rowウィジェットは、子ウィジェットを横方向に並べたいときに使います。Columnと使い方はほぼ同じですが、方向が異なります。


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: Text('Rowウィジェット')),
        body: Row(
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          children: [
            Icon(Icons.star),
            Icon(Icons.favorite),
            Icon(Icons.home),
          ],
        ),
      ),
    );
  }
}

mainAxisAlignmentプロパティで横方向の配置を調整することも可能です。ここではアイコンを均等に配置しています。

Flutterを「実務レベル」で使えるようになりたい人や、 iPhone / Android両対応アプリ開発の流れをまとめて学びたい人には、 定番の実践書がこちらです。

Flutter実践開発をAmazonで見る

※ Amazon広告リンク

4. Stackウィジェットの使い方(重ねて表示)

4. Stackウィジェットの使い方(重ねて表示)
4. Stackウィジェットの使い方(重ねて表示)

Stackウィジェットは、複数のウィジェットを重ねて表示したいときに使用します。たとえば、背景画像の上にテキストを載せるようなレイアウトに向いています。


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: Text('Stackウィジェット')),
        body: Stack(
          children: [
            Container(
              width: double.infinity,
              height: 200,
              color: Colors.blue,
            ),
            Positioned(
              top: 50,
              left: 20,
              child: Text('重ねたテキスト', style: TextStyle(color: Colors.white, fontSize: 24)),
            ),
          ],
        ),
      ),
    );
  }
}

Positionedウィジェットを使えば、重ねた要素を細かく配置できます。Stackの順序は、上に書いたものほど下に表示されます。

5. Column・Row・Stackの違いを図解的に理解しよう

5. Column・Row・Stackの違いを図解的に理解しよう
5. Column・Row・Stackの違いを図解的に理解しよう

それぞれのウィジェットは以下のように使い分けます:

  • Column:縦方向に整列したいとき
  • Row:横方向に並べたいとき
  • Stack:ウィジェットを重ねたいとき

たとえば、ログイン画面のように「タイトル」「入力欄」「ボタン」を縦に並べたいならColumn、SNSの投稿一覧でアイコンやテキストを横並びにしたいならRow、背景画像の上にテキストを置きたいならStackを使うと効果的です。

6. Flutter初心者が気をつけるべきレイアウトの落とし穴

6. Flutter初心者が気をつけるべきレイアウトの落とし穴
6. Flutter初心者が気をつけるべきレイアウトの落とし穴

Flutterでは、レイアウトウィジェットの入れ子構造が深くなりすぎると可読性が低下しやすくなります。また、ColumnRowでウィジェットが画面外にはみ出るとエラーになることがあります。

そのようなときは、SingleChildScrollViewでスクロール可能にしたり、ExpandedFlexibleを使ってサイズを調整することが大切です。

7. よく使われる組み合わせレイアウト

7. よく使われる組み合わせレイアウト
7. よく使われる組み合わせレイアウト

Flutterの開発では、ColumnRowStackPositionedのように複数のウィジェットを組み合わせてレイアウトを組み立てます。以下はColumnとRowの組み合わせ例です:


Column(
  children: [
    Text('上部のテキスト'),
    Row(
      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
      children: [
        Icon(Icons.thumb_up),
        Icon(Icons.thumb_down),
      ],
    ),
    Text('下部のテキスト'),
  ],
)

このように、入れ子にして自由自在にレイアウトできるのがFlutterの魅力です。柔軟な画面構成ができるため、慣れてくるととても強力な表現が可能になります。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Flutterのレイアウトウィジェットって何ですか?初心者向けに教えてください

Flutterのレイアウトウィジェットとは、画面上のUIを縦や横に並べたり重ねたりするために使う部品です。Column、Row、Stackなどがあり、Flutterアプリの画面構成に必須の要素です。
FlutterのUI開発の一覧へ
新着記事
FlutterのMVP・MVVMアーキテクチャの違いと使い分け
FlutterのMVP・MVVMアーキテクチャの違いと使い分けを初心者向けに解説!
オニオンアーキテクチャの基本とFlutterでの適用例
オニオンアーキテクチャの基本とFlutterでの適用例を初心者向けに解説
クリーンアーキテクチャとは?Flutterでの導入メリット
クリーンアーキテクチャとは?Flutterでの導入メリットをやさしく解説
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金まとめ
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金を初心者向けに徹底解説
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク