플러터(Flutter)의 Wrap 위젯은 화면에 위젯을 래핑하여 자동으로 다음 줄로 넘어가거나, 오버플로우되는 경우 스크롤 기능을 제공합니다. 이 글에서는 Wrap 위젯의 다양한 적용 사례에 대해 알아보겠습니다.
1. Wrap의 기본 사용법
Wrap 위젯은 간단한 사용법으로도 다양한 레이아웃을 구성할 수 있습니다. 예를 들어, 다음과 같이 Wrap을 사용하여 다양한 크기의 컨테이너를 자동으로 배치할 수 있습니다.
Wrap(
spacing: 8.0, // 위젯 사이의 간격 설정
runSpacing: 12.0, // 줄 사이의 간격 설정
children: <Widget>[
Container(width: 100, height: 100, color: Colors.red),
Container(width: 80, height: 80, color: Colors.blue),
Container(width: 120, height: 120, color: Colors.green),
Container(width: 150, height: 150, color: Colors.yellow),
Container(width: 90, height: 90, color: Colors.orange),
],
),
위 코드에서 spacing
은 위젯 사이의 간격을, runSpacing
은 줄 사이의 간격을 설정합니다.
2. Wrap의 정렬 기능
Wrap 위젯은 컨테이너들을 자동으로 배치하는데, 이때 정렬 기능을 사용할 수도 있습니다. alignment
속성을 사용하여 Wrap의 정렬 방식을 조정할 수 있습니다. 예를 들어, 다음 코드는 컨테이너들을 왼쪽 정렬로 배치하는 예입니다.
Wrap(
alignment: WrapAlignment.start, // 왼쪽 정렬
children: <Widget>[
Container(width: 100, height: 100, color: Colors.red),
Container(width: 80, height: 80, color: Colors.blue),
Container(width: 120, height: 120, color: Colors.green),
],
),
위 코드에서 WrapAlignment.start
를 이용하여 왼쪽 정렬을 설정했습니다. 다른 정렬 옵션으로는 WrapAlignment.end
, WrapAlignment.center
, WrapAlignment.spaceBetween
, WrapAlignment.spaceAround
등이 있습니다.
3. Wrap의 오버플로우 핸들링
Wrap 위젯은 화면에 모든 컨테이너를 완벽하게 배치하기 위해, 경우에 따라서는 오버플로우될 수 있습니다. Wrap의 오버플로우를 처리하기 위해 overflow
속성을 사용할 수 있습니다. 예를 들어, 다음 코드는 Wrap의 오버플로우를 스크롤 기능으로 처리하는 예입니다.
Wrap(
spacing: 8.0,
runSpacing: 12.0,
children: <Widget>[
Container(width: 100, height: 100, color: Colors.red),
Container(width: 80, height: 80, color: Colors.blue),
Container(width: 120, height: 120, color: Colors.green),
Container(width: 150, height: 150, color: Colors.yellow),
Container(width: 90, height: 90, color: Colors.orange),
],
overflow: WrapOverflow.scroll, // 오버플로우 스크롤
),
위 코드에서 overflow
속성을 WrapOverflow.scroll
로 설정하여 오버플로우시 스크롤 기능을 추가했습니다. 다른 옵션으로는 WrapOverflow.clip
이 있으며, 이 경우 오버플로우된 부분이 잘려서 보여지게 됩니다.
이렇게 플러터의 Wrap 위젯은 다양한 기능을 사용하여 유연하고 다양한 레이아웃을 구성할 수 있는 편리한 위젯입니다. 많은 적용 사례를 고려하여 Wrap을 사용하여 UI를 개발해 보세요!