memostack
article thumbnail
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형

MainAxisAlignment 속성을 이용하여 Column의 child 위젯을 정렬할 수 있다.

  • 웹 개발을 해본 사람은 쉽게 이해할 수 있다.

 

기본 코드

import "package:flutter/material.dart";

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(title: "Column 위젯 정렬 예시", home: ColumnExample());
  }
}

class ColumnExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          children: [
            Container(
              width: 100,
              height: 100,
              color: Colors.red,
            ),
            Container(
              width: 100,
              height: 100,
              color: Colors.blue,
            ),
            Container(
              width: 100,
              height: 100,
              color: Colors.green,
            )
          ],
        ),
      ),
    );
  }
}

 

상단에서부터 정렬

MainAxisAlignment.start를 이용하여 상단부터 차곡차곡 쌓는다.

class ColumnExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.start, // 상단에 맞춰 정렬
          children: [
            ..중략..
          ],
        ),
      ),
    );
  }
}

start

 

가운데 정렬

MainAxisAlignment.center를 이용하여 가운데로 정렬한다.

class ColumnExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center, // 가운데 정렬
          children: [
            ..중략..
          ],
        ),
      ),
    );
  }
}

center

 

하단에서부터 정렬

MainAxisAlignment.end를 이용하여 하단부터 차곡차곡 쌓는다.

class ColumnExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.end, // 하단에 맞춰 정렬
          children: [
            ..중략..
          ],
        ),
      ),
    );
  }
}

end

 

같은 간격만큼 공간을 두고 정렬

MainAxisAlignment.spaceAround

spaceAround는 각 위젯간에 여백이 생긴다. 그리고, 양끝에 여백이 생긴다.

class ColumnExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceAround, // 같은 간격을 두고 정렬
          children: [
            ..중략..
          ],
        ),
      ),
    );
  }
}

spaceAround

 

MainAxisAlignment.spaceBetween

spaceAround와 비슷하지만, 양끝에 여백이 없이 정렬이 된다.

class ColumnExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          mainAxisAlignment:
              MainAxisAlignment.spaceBetween, // 같은 간격을 두고 정렬 (양끝 여백 없음)
          children: [
            ...중략...
          ],
        ),
      ),
    );
  }
}

spaceBetween

MainAxisAlignment.spaceEvenly

spaceAround와 똑같아 보이지만 미세하게 차이가 있다.

  • spaceAround는 각 위젯의 간격의 절반만 앞뒤로 여백을 가진다.
  • spaceEvenly는 각 위젯의 간격만큼 앞뒤로 여백을 가진다.
class ColumnExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceEvenly, // 같은 간격을 두고 정렬
          children: [
            ...중략...
          ],
        ),
      ),
    );
  }
}

spaceEvenly

 

왼 - spaceEvenly / 우 - spaceAround

 

다른 글

2021/01/03 - [Flutter] - 플러터(flutter) - Column 가로 정렬 방법 (CrossAxisAlignment)

 

플러터(flutter) - Column 가로 정렬 방법 (CrossAxisAlignment)

Column 위젯을 가로로 정렬할때는 crossAxisAlignment 속성을 이용한다. CrossAxisAlignment.start start 는 default 값으로 왼쪽에 붙게 한다. import "package:flutter/material.dart"; void main() => runApp(M..

memostack.tistory.com

2021/01/02 - [Flutter] - 플러터(flutter) - 기본 레이아웃 (Column, Row, Container)

 

플러터(flutter) - 기본 레이아웃 (Column, Row, Container)

Container 컨테이너는 width 와 height 속성이 있어서 크기를 조절할 수 있다. import "package:flutter/material.dart"; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widg..

memostack.tistory.com

2021/01/02 - [Flutter] - 플러터(flutter) - Container와 SizedBox의 차이

 

플러터(flutter) - Container와 SizedBox의 차이

Container와 SizedBox 위젯은 둘다 width와 height를 가진다. 그래서 너비와 높이를 설정 할 수 있다. 하지만 차이점이 존재한다. Container Container의 위젯은 width와 height를 넣지 않으면, 최대 크기로 확장..

memostack.tistory.com

 

반응형
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
profile

memostack

@bluemiv_mm

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!