[플러터] 위젯 세로 정렬하기 - Cloumn 클래스 사용법

소요 시간: 5분

Column 클래스의 세로 정렬

Column 클래스는 수직 방향으로 위젯을 배치하는데 사용됩니다. 각 위젯은 children 매개변수에 리스트 형태로 추가할 수 있습니다.

기본 구조

아래는 Column 위젯에 두 개의 Text 위젯을 추가한 기본 예제입니다:

Column(
  children: [
    Text('Hello'),
    Text('World!'),
  ],
)

children 매개변수에 여러 위젯 추가

children 매개변수에는 여러 개의 위젯을 리스트로 입력할 수 있습니다. 아래는 MyApp 클래스의 예시입니다:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Column(
          children: [
            Text('Hello'),
            Text('World!'),
          ],
        ),
      ),
    );
  }
}

Column 위젯의 세로 정렬 방법

mainAxisAlignment 매개변수를 사용하여 Column 내 위젯의 세로 정렬을 제어할 수 있습니다. 이 매개변수에는 MainAxisAlignment enum 값을 입력합니다.

가운데 정렬

위젯을 세로로 가운데 정렬하려면 mainAxisAlignment 매개변수에 MainAxisAlignment.center를 입력합니다:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('Hello'),
            Text('World!'),
          ],
        ),
      ),
    );
  }
}

위쪽 정렬

위젯을 상단에 정렬하려면 mainAxisAlignment 매개변수에 MainAxisAlignment.start를 입력합니다:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Column(
          mainAxisAlignment: MainAxisAlignment.start,
          children: [
            Text('Hello'),
            Text('World!'),
          ],
        ),
      ),
    );
  }
}

아래쪽 정렬

위젯을 하단에 정렬하려면 mainAxisAlignment 매개변수에 MainAxisAlignment.end를 입력합니다:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Column(
          mainAxisAlignment: MainAxisAlignment.end,
          children: [
            Text('Hello'),
            Text('World!'),
          ],
        ),
      ),
    );
  }
}

균등 분배 정렬

위젯을 균등하게 분배하려면 mainAxisAlignment 매개변수에 MainAxisAlignment.spaceEvenly를 입력합니다:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Column(
          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
          children: [
            Text('Hello'),
            Text('World!'),
          ],
        ),
      ),
    );
  }
}

공간 배분 정렬

위젯 사이에 동일한 간격을 두려면 mainAxisAlignment 매개변수에 MainAxisAlignment.spaceBetween를 입력합니다:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Column(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: [
            Text('Hello'),
            Text('World!'),
          ],
        ),
      ),
    );
  }
}

위의 방법들을 통해 Column 위젯 내에서 원하는 대로 세로 정렬을 설정할 수 있습니다. 이를 통해 보다 유연하고 다양한 레이아웃을 구현할 수 있습니다.

결론

Column 위젯은 수직 방향으로 위젯을 배치하는 데 사용되며, children 매개변수에 여러 위젯을 추가할 수 있습니다. mainAxisAlignment 매개변수를 사용하면 위젯을 상단, 중앙, 하단, 균등 분배, 또는 공간 배분 방식으로 정렬할 수 있습니다. 이를 통해 다양한 레이아웃을 손쉽게 구현할 수 있습니다.

플러터 리스트