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

【Flutter】crossAxisAlignmentが効かない時の対処法

こんにちは、フラメルです。

今回はColumnRowなどでcrossAxisAlignmentが効かない時の対処法を紹介します。

目次

対処法:クロス軸の横幅をいっぱいにする

SizedBoxあり
SizedBoxなし

ColumncrossAxisAlignmentを使用して要素の配置を指定する際、Columnの横幅が親要素に対して横幅いっぱいに広がっている必要があります。

よって下記コードのようにColumnの子要素にSizedBox(width: double.infinity)を追加して横幅いっぱいに広げるとcrossAxisAlignmentが効くようになります。

Column(
  crossAxisAlignment: CrossAxisAlignment.center,
  children: [
    SizedBox(width: double.infinity),
    Container(
      width: 150,
      height: 150,
      color: Colors.red,
    ),
    Container(
      width: 150,
      height: 150,
      color: Colors.yellow,
    ),
    Container(
      width: 150,
      height: 150,
      color: Colors.blue,
    ),
  ],
),

サンプルコード

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('Flutter')),
        body: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            SizedBox(width: double.infinity),
            Container(
              width: 150,
              height: 150,
              color: Colors.red,
            ),
            Container(
              width: 150,
              height: 150,
              color: Colors.yellow,
            ),
            Container(
              width: 150,
              height: 150,
              color: Colors.blue,
            ),
          ],
        ),
      ),
    );
  }
}

以上です。

目次