Flutter에서 Expanded
위젯은 행(row), 열(column), 또는 유연한 상자(flex) 레이아웃 내에서 자식 위젯이 사용할 수 있는 여분의 공간을 채우도록 합니다. 이는 동적인 사용자 인터페이스 설계에서 필수적인 요소로, 자식 위젯이 할당된 공간을 최대한 활용할 수 있게 돕습니다.
flex
: 자식 위젯이 차지하는 공간의 비율을 결정합니다. 기본값은 1
이며, 이는 동일한 Expanded
위젯을 가진 다른 자식들과 같은 비율로 공간을 차지하게 합니다.child
: Expanded
위젯 내부에 포함될 실제 위젯을 지정합니다. 이는 버튼, 이미지, 텍스트 등 다양한 위젯이 될 수 있습니다.Row
나 Column
에서 각 위젯에 공평하게 공간을 할당합니다.아래 예제는 Column
레이아웃에서 Expanded
를 사용하여 중간 콘텐츠를 동적으로 확장하는 방법을 보여줍니다.
Scaffold(
body: Column(
children: <Widget>[
Text('상단 텍스트'),
Expanded(
flex: 2,
child: Center(
child: Text('이곳은 확장된 중앙 콘텐츠입니다.'),
),
),
Text('하단 텍스트')
],
),
)
flex
속성을 다르게 설정하여 각 위젯의 크기 비율을 세밀하게 조정할 수 있습니다.Expanded
는 단순히 공간을 채우는 것이 아니라, 복잡한 사용자 인터페이스에서 다양한 레이아웃 전략을 구현할 수 있게 도와줍니다.Flex: Row
및 Column
과 같은 유연한 상자 레이아웃의 기반 클래스입니다. Flex
는 레이아웃의 방향성을 정의할 수 있는 기본 클래스로, 하위 위젯들에게 공간 분배 방식을 제어할 수 있는 속성을 제공합니다.
Flexible: Expanded
와 유사하지만, Flexible
위젯은 자식 위젯이 할당된 공간을 꼭 채울 필요는 없으며, fit
속성을 통해 남은 공간을 어떻게 채울지 유연하게 조정할 수 있습니다. 주요 fit
옵션은 다음과 같습니다:
FlexFit.tight
: 자식이 할당된 공간을 완전히 채웁니다 (기본값).
FlexFit.loose
: 자식이 필요한 만큼만 공간을 사용하고 나머지는 비웁니다.
Spacer: 레이아웃 내에서 공간을 생성할 때 사용하는 위젯입니다. Spacer
는 Flexible
의 구현체로서, 기본적으로 FlexFit.tight
를 사용하여 지정된 flex
값에 따라 빈 공간을 만들어냅니다. 이는 주로 위젯들 사이의 간격을 조절할 때 사용됩니다.