`Column`과 `Row`는 Flutter에서 수직 및 수평으로 위젯을 배열할 수 있는 레이아웃 위젯입니다. 이 두 위젯은 자식 위젯들을 정렬하고 배치하는 데 중요한 역할을 합니다.
### Column
`Column` 위젯은 자식 위젯들을 수직으로 배열합니다. 주요 속성은 다음과 같습니다:
- **children**: 배열할 자식 위젯들의 리스트입니다.
- **mainAxisAlignment**: 주축(세로축)에서 자식 위젯들의 정렬 방식을 설정합니다.
- **crossAxisAlignment**: 교차축(가로축)에서 자식 위젯들의 정렬 방식을 설정합니다.
- **mainAxisSize**: 주축에서의 크기를 설정합니다.
### Row
`Row` 위젯은 자식 위젯들을 수평으로 배열합니다. 주요 속성은 Column과 유사합니다:
- **children**: 배열할 자식 위젯들의 리스트입니다.
- **mainAxisAlignment**: 주축(가로축)에서 자식 위젯들의 정렬 방식을 설정합니다.
- **crossAxisAlignment**: 교차축(세로축)에서 자식 위젯들의 정렬 방식을 설정합니다.
- **mainAxisSize**: 주축에서의 크기를 설정합니다.
### 주요 속성 설명
- **MainAxisAlignment**
- `MainAxisAlignment.start`: 자식 위젯들을 시작 부분에 정렬합니다.
- `MainAxisAlignment.end`: 자식 위젯들을 끝 부분에 정렬합니다.
- `MainAxisAlignment.center`: 자식 위젯들을 중앙에 정렬합니다.
- `MainAxisAlignment.spaceBetween`: 자식 위젯들 사이에 동일한 간격을 둡니다.
- `MainAxisAlignment.spaceAround`: 자식 위젯들 사이와 양 끝에 동일한 간격을 둡니다.
- `MainAxisAlignment.spaceEvenly`: 자식 위젯들 사이에 동일한 간격을 두고, 양 끝에도 같은 간격을 둡니다.
- **CrossAxisAlignment**
- `CrossAxisAlignment.start`: 교차축의 시작 부분에 정렬합니다.
- `CrossAxisAlignment.end`: 교차축의 끝 부분에 정렬합니다.
- `CrossAxisAlignment.center`: 교차축의 중앙에 정렬합니다.
- `CrossAxisAlignment.stretch`: 교차축을 채우도록 자식 위젯을 확장합니다.
- **MainAxisSize**
- `MainAxisSize.max`: 주축의 최대 크기를 차지합니다.
- `MainAxisSize.min`: 주축의 최소 크기를 차지합니다.
### 예제 코드
아래 예제 코드는 `Column`과 `Row`의 기본 사용법을 보여줍니다.
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('Column and Row Example'),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text(
'Column 1',
style: TextStyle(fontSize: 24),
),
Text(
'Column 2',
style: TextStyle(fontSize: 24),
),
Text(
'Column 3',
style: TextStyle(fontSize: 24),
),
SizedBox(height: 20), // Column과 Row 사이의 간격
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Text(
'Row 1',
style: TextStyle(fontSize: 24),
),
Text(
'Row 2',
style: TextStyle(fontSize: 24),
),
Text(
'Row 3',
style: TextStyle(fontSize: 24),
),
],
),
],
),
),
);
}
}
### 코드 설명
- **Column 사용**
- `mainAxisAlignment`를 `MainAxisAlignment.center`로 설정하여 자식 위젯들을 수직 중앙에 정렬합니다.
- `crossAxisAlignment`를 `CrossAxisAlignment.center`로 설정하여 자식 위젯들을 가로 중앙에 정렬합니다.
- 세 개의 `Text` 위젯을 자식으로 추가하여 수직으로 배치합니다.
- **Row 사용**
- `mainAxisAlignment`를 `MainAxisAlignment.spaceEvenly`로 설정하여 자식 위젯들 사이에 동일한 간격을 둡니다.
- 세 개의 `Text` 위젯을 자식으로 추가하여 수평으로 배치합니다.
이 예제는 `Column`과 `Row` 위젯을 사용하여 자식 위젯들을 수직 및 수평으로 정렬하는 방법을 보여줍니다. `mainAxisAlignment`와 `crossAxisAlignment`를 통해 정렬 방식을 설정할 수 있으며, 다양한 레이아웃을 손쉽게 구성할 수 있습니다.
user interface column & row with abstract image do draw in web screen
'Flutter' 카테고리의 다른 글
Flutter GridView (그리드뷰) (0) | 2024.06.08 |
---|---|
Flutter ListView (리스트뷰) (0) | 2024.06.08 |
Flutter AppBar (0) | 2024.06.08 |
Flutter Scaffold (1) | 2024.06.08 |