Axis는 Row와 Column의 파라미터다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class MyApp extends StatelessWidget {
  const MyApp({super.key});

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

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Row(
        // axis
        children: [
          Container(
            color: Colors.red,
            width: 50,
            height: 50,
          ),
          Container(
            color: Colors.yellow,
            width: 50,
            height: 50,
          ),
          Container(
            color: Colors.green,
            width: 50,
            height: 50,
          ),
        ],
      ),
    );
  }
}

이 위의 주석 부분에 코드를 적으면 된다. 참고로 Row라고 적혀있으니 모두 가로로 정렬될 것이며, Column으로 하면 세로로 정렬될 것이다.

mainAxisAlignment: 중심축을 기반으로 정렬한다.

  • MainAxisAlignment.start: 시작 지점부터 일렬로 나열한다.
  • MainAxisAlignment.center: 중간 부분에 일렬로 나열한다.
  • MainAxisAlignment.end: 마지막 부분부터 일렬로 나열한다.
  • MainAxisAlignment.spaceBetween: 양쪽 끝을 사이드에 붙이고 동일한 간격으로 나열한다.
  • MainAxisAlignment.spaceEvenly: 모든 간격을 균등하게 하고 시작 부분과 끝부분의 간격도 동일하다.
  • MainAxisAlignment.spaceAround: 모든 간격을 균등하게 하고 시작 부분과 끝부분의 간격은 다른 아이템과의 간격의 1/2로 한다.

CrossAxisAlignment: 상대축을 중심으로 정렬한다. 즉, Row라면 세로축, Column이라면 가로축이다.

  • CrossAxisAlignment.start: 상대축 시작 지점부터 일렬로 나열한다.
  • CrossAxisAlignment.center: 상대축 중간 부분에 일렬로 나열한다.
  • CrossAxisAlignment.end: 상대축 마지막 부분부터 일렬로 나열한다.
  • CrossAxisAlignment.stretch: 상대축 길이를 최대(상위 위젯) 범위로 늘린다.

mainAxisSize: 중심축을 기반으로 범위를 지정한다.

  • MainAxisSize.max: 사이드 부분을 완전히 채운다.
  • MainAxisSize.min: 가진 아이템의 범위만큼만 채운다.