kokogento
@kokogento (ここ げんと)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Flutter 均等に配置するmainAxisAlignmentが効かない

Q&A

Closed

mainAxisAlignmentがが効かない

スクリーンショット 2021-03-30 23.03.27.jpg
上記画像の3つのテキストを縦に均等に配置したいです。

 return Scaffold(
      appBar: AppBar(
        title: Text('Home'),
      ),
      body: Container(
        padding: EdgeInsets.all(20),
        child: Column(
          children: <Widget>[
            Card(
              child: Row(
                children: <Widget>[
                  Image.network(
                      'https://image.tmdb.org/t/p/w154//5KYaB1CTAklQHm846mHTFkozgDN.jpg'),
                  Expanded(
                    child: Container(
                      padding: const EdgeInsets.all(10),
                      child: Column(
                        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                        children: <Widget>[
                          Container(
                            width: double.infinity,
                            // height: 50,
                            child: Text(
                              'Godzilla vs. Kong',
                              style: Theme.of(context).textTheme.headline6,
                              textAlign: TextAlign.left,
                            ),
                          ),
                          Container(
                            width: double.infinity,
                            // height: 20,
                            child: Text(
                              '2021-03-24',
                              style: TextStyle(
                                color: Colors.grey.shade700,
                              ),
                              textAlign: TextAlign.left,
                            ),
                          ),
                          Container(
                            width: double.infinity,
                            // height: 60,
                            child: Text(
                              'In a time when monsters walk the Earth, humanity’s...',
                              textAlign: TextAlign.left,
                            ),
                          ),
                        ],
                      ),
                    ),
                  )
                ],
              ),
            )
          ],
        ),
      ),
    );

こちらの参考のような形になっているのになぜ効かないのでしょうか??

Column(
  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  children: <Widget>[
    Text("item1"),
    Text("item2"),
    Text("item3"),
    Text("item4"),
  ],
),

ColumnchildrenTextではなくContainerだからでしょうか?

だとしたら、Containerの場合はどうすれば良いでしょうか??:fearful:

Flutterのウィジェット難しすぎて禿げそうです。

0

2Answer

Rowで画像とExpandedで囲んだColumnを並べているかと思いますが、spaceEvenlyが効いていない理由は、Columnの高さが指定されておらず広がれないからかと思います。
RowをIntrinsicHeightというWidgetで囲ってあげると、RowのChildrenの高さが均等になるので、SpaceEvenlyもしっかりと動作してくれると思います!

IntrinsicHeightについて
https://api.flutter.dev/flutter/widgets/IntrinsicHeight-class.html

1Like

なるほど、Columnの高さを指定する必要があったのですね。。。

HTML/CSSと全く違うFlutterのウィジェットは慣れるまでは少しトリッキーに感じるので、とても助かりました!:smile:

1Like

Your answer might help someone💌