世界最大級のオンライン学習サービス「Udemy(ユーデミー)」とは?

【Flutter】Rowの使い方|水平に複数のウィジェットを並べる

水平に複数のウィジェットを並べたい

こんな時に便利なのが Row ウィジェットです。

Rowを使用することで複数のウィジェットを水平に並べられます。また並んでいるウィジェットの配置を指定したり、逆順にしたりなどできます。

それではRowの基本的な使い方とカスタマイズ方法について解説していきます!

目次

基本的な使い方

Rowの基本的な使い方について解説します。

Rowで複数のウィジェットを水平に並べるにはchildrenプロパティにウィジェットが入る配列を渡し、配列にウィジェットを追加します。

Row(
  children: [
    WidgetA(),
    WidgetB(),
    WidgetC(),
  ],
),
画像のサンプルコード
import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: MyWidget(),
    );
  }
}

class MyWidget extends StatelessWidget {
  const MyWidget({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Flutter')),
      body: Center(
        child: Row(
          children: [
            Container(
              width: 100,
              height: 100,
              color: Colors.red,
            ),
            Container(
              width: 100,
              height: 100,
              color: Colors.amberAccent,
            ),
            Container(
              width: 100,
              height: 100,
              color: Colors.blue,
            ),
          ],
        ),
      ),
    );
  }
}

カスタマイズ方法

続いてRowのカスタマイズ方法について解説します。

水平方向の並びを逆順にする

Rowの水平方向の並びを右から左の逆順にするにはtextDirectionプロパティの引数にTextDirection.rtlを渡します。

デフォルトはTextDirection.ltrで左から右にウィジェットが並びます。

Row(
  textDirection: TextDirection.rtl,
  children: [...],
),

水平方向の配置

Rowの水平方向の配置はmainAxisAlignmentプロパティで設定できます。

mainAxisAlignmentプロパティの引数にMainAxisAlignmentウィジェットの列挙型(enum)を渡すことで次のような様々な配置を指定できます。

列挙型配置
MainAxisAlignment.start左寄せ
MainAxisAlignment.center中央寄せ
MainAxisAlignment.end右寄せ
MainAxisAlignment.spaceAroundそれぞれの要素の左右に均等なスペースを空ける
MainAxisAlignment.spaceBetween要素同士の間に均等なスペースを空ける
MainAxisAlignment.spaceEvenly先頭の要素の前、要素同士の間、末尾の要素の後に
均等なスペースを空ける
Row(
  mainAxisAlignment: MainAxisAlignment.spaceAround,
  children: [...],
),

また先ほど解説したtextDirectionプロパティでTextDirection.rtl(右から左の並び)にしている場合は左寄せと右寄せが逆になります。

垂直方向の配置

Rowの垂直方向の配置はcrossAxisAlignmentプロパティで設定できます。

crossAxisAlignmentプロパティの引数にCrossAxisAlignmentウィジェットの列挙型(enum)を渡すことで次のような様々な配置を指定できます。

列挙型配置
CrossAxisAlignment.start上寄せ
CrossAxisAlignment.center中央寄せ
CrossAxisAlignment.end下寄せ
CrossAxisAlignment.stretch親ウィジェットが許す範囲まで横いっぱいに広がる
Row(
  crossAxisAlignment: CrossAxisAlignment.end,
  children: [...],
),

Rowではあまり使用しないのですがverticalDirectionプロパティでVerticalDirection.upにしている場合は上寄せと下寄せが逆になります。このverticalDirectionプロパティはColumnで垂直方向の要素を逆順にする際などに使用されます。

まとめ

今回はRowの基本的な使い方とカスタマイズ方法について解説しました。

Rowを使用することで複数のウィジェットを水平に並べられます。また並んでいるウィジェットの配置を指定したり、逆順にしたりなどできるのでぜひ使ってみてください。

目次