반응형
Flutter에서 위젯을 수직 중앙에 정렬하는 방법은 다양한 위젯을 사용하여 구현할 수 있습니다. 각 방법은 특정 상황에서 더 적합할 수 있으므로, 아래에서 각각의 방법을 예제와 함께 설명하겠습니다.
1. 주요 방법들
- Center 위젯 사용
- Align 위젯 사용
- Column 위젯 사용
- Container 위젯의 alignment 속성 사용
- Expanded 위젯 사용
- Custom Multi-Child Layout (Wrap, Stack 등) 사용
2. Center 위젯 사용
Center
위젯은 자식 위젯을 수평과 수직으로 중앙에 배치합니다. 이 위젯은 가장 간단하게 중앙 정렬을 구현할 수 있는 방법입니다.
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('Center Widget Example'),
),
body: Center(
child: Text('Vertically Centered Text'),
),
),
);
}
}
3. Align 위젯 사용
Align
위젯은 alignment
속성을 사용하여 자식 위젯을 특정 위치에 배치할 수 있습니다. 수직 중앙 정렬을 위해 Alignment.center
또는 Alignment.centerLeft
, Alignment.centerRight
를 사용할 수 있습니다.
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('Align Widget Example'),
),
body: Align(
alignment: Alignment.center,
child: Text('Vertically Centered Text'),
),
),
);
}
}
4. Column 위젯 사용
Column
위젯은 여러 자식 위젯을 수직으로 정렬합니다. 자식들을 수직 중앙에 배치하려면 mainAxisAlignment
속성에 MainAxisAlignment.center
를 설정합니다.
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 Widget Example'),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Vertically Centered Text in Column'),
],
),
),
);
}
}
5. Container 위젯의 alignment 속성 사용
Container
위젯의 alignment
속성을 사용하여 자식 위젯을 중앙에 정렬할 수 있습니다. 수직 중앙 정렬을 위해 Alignment.center
를 사용합니다.
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('Container Alignment Example'),
),
body: Container(
alignment: Alignment.center,
child: Text('Vertically Centered Text in Container'),
),
),
);
}
}
6. Expanded 위젯 사용
Expanded
위젯을 Column
위젯 내에서 사용하면, 자식 위젯을 남은 공간에서 동일한 비율로 확장하여 중앙에 배치할 수 있습니다.
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('Expanded Widget Example'),
),
body: Column(
children: <Widget>[
Expanded(child: Container()), // 위쪽의 빈 공간
Text('Vertically Centered Text with Expanded'),
Expanded(child: Container()), // 아래쪽의 빈 공간
],
),
),
);
}
}
7. Custom Multi-Child Layout 사용 (Wrap, Stack 등)
복잡한 레이아웃을 다룰 때 Wrap
또는 Stack
위젯을 사용하여 중앙 정렬을 구현할 수 있습니다.
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('Stack Alignment Example'),
),
body: Stack(
children: <Widget>[
Positioned.fill(
child: Align(
alignment: Alignment.center,
child: Text('Vertically Centered Text in Stack'),
),
),
],
),
),
);
}
}
8. 요약
- Center: 가장 간단하게 수직 중앙 정렬을 구현.
- Align: 특정 위치에 자식 위젯을 배치할 때 사용.
- Column: 여러 자식 위젯을 수직으로 정렬할 때 사용.
- Container: 자식 위젯을 수직 중앙에 정렬할 때 사용.
- Expanded: 남은 공간을 균등하게 확장하여 중앙 정렬.
- Custom Multi-Child Layout: 복잡한 레이아웃 관리.
각 방법을 상황에 맞게 선택하여 사용하면, 원하는 위치에 위젯을 정렬할 수 있습니다.
반응형
'언어 > Flutter' 카테고리의 다른 글
[ Flutter ] 안드로이드 인앱 결제 기능 구현하기 (0) | 2024.07.10 |
---|---|
[ Flutter ] Margin 사용하기 (0) | 2024.06.21 |
[ Flutter ] Layout에서 수평 중앙 정렬 하기 (0) | 2024.06.21 |
[ Flutter ] ElevatedButton 사용하기 (0) | 2024.06.21 |
[ Flutter ] Android APK 빌드하기 (0) | 2024.06.21 |