본문 바로가기
flutter

Flutter[플러터] / FittedBox 를 사용하여 크기 오류 해결하기, 크기 맞춤 하기 (Fit, 핏) FittedBox (Flutter Widget of the Week)

by ch5c 2025. 5. 9.
반응형

FittedBox class

fit 에 따라 자식의 크기를 조정하고 위치를 지정합니다.

https://youtu.be/T4Uehk3_wlY

공식 문서 코드

 


FittedBox 는 자식 위젯을 부모 위젯의 크기에 맞춰주게 만들어주는 위젯이다. 정확히 말하면 그것만을 위해 존재하는 위젯이다.

한번 가볍게 알아보자.

하위 속성
속성명 타입 기본값 설명
child Widget? 확대 또는 축소 대상이 되는 자식 위젯
fit BoxFit BoxFit.contain 자식 위젯을 어떤 비율로 박스에 맞출지 결정하는 방식
alignment AlignmentGeometry Alignment.center 자식 위젯이 박스 내에서 어떻게 정렬될지 결정
clipBehavior Clip Clip.none 자식이 넘치는 경우 어떤 방식으로 잘라낼지 결정

 

속성표를 보니 조금 감이 오는가? 그렇다. Container 같은 거에 기본적으로 다 달려있는 거다. 다만 이 FittedBox 는 더 사용하기 쉽게 SizedBox 는 크기만 조절할 수 있다면 FuttedBox 는 fit 만 조절 할 수 있도록 만들어져 있다.

우리가 흔히 SizedBox 를 사용하는 것처럼 사용하면 된다는 말이다.

 

가장 중요한 속성은 당연하게도 fit 일 것이다. fit 은 BoxFit 을 받고 우리는 생성자로 이제 어떠한 것을 넣을지 결정하면 된다.

FittedBox 의 본체인 BoxFit enum 은 이런 종류가 있다.

 

fill 

소스의 종횡비를 왜곡하여 대상 상자를 채웁니다.


contain

가능한 한 크게 하되, 대상 상자 안에 소스를 완전히 포함하도록 합니다.

 

cover

대상 상자 전체를 덮는 동시에 가능한 한 작게 만듭니다.

실제로 콘텐츠를 잘라내려면 FittedBox 와 함께 clipBehavior: Clip.hardEdge 를 사용하세요.

 

fitWidth 

소스가 대상 상자를 수직으로 넘치더라도 소스의 전체 너비가 표시되는지 확인하세요.

실제로 콘텐츠를 잘라내려면 FittedBox 와 함께 clipBehavior: Clip.hardEdge 를 사용하세요.


fitHeight

소스가 대상 상자를 수평으로 넘치더라도 소스의 전체 높이가 표시되는지 확인하세요.

실제로 콘텐츠를 잘라내려면 FittedBox 와 함께 clipBehavior: Clip.hardEdge 를 사용하세요.


none

소스를 대상 상자 안에 맞추고(기본적으로 가운데 맞춤) 상자 밖에 있는 소스 부분을 버립니다.

원본 이미지의 크기가 조정되지 않았습니다.

실제로 콘텐츠를 잘라내려면 FittedBox 와 함께 clipBehavior: Clip.hardEdge 를 사용하세요.

 

scaleDown

소스를 대상 박스 안에 (기본적으로 중앙에) 정렬하고, 필요할 경우 크기를 줄여서 박스 안에 맞춥니다.
만약 이미지를 줄여야 한다면 contain 처럼 작동하고, 그렇지 않으면 아무런 스케일 조정 없이 (none) 그대로 표시됩니다.


뭐 이렇게 있다. 그 밖에도 하위속성으로 clipBehavior 가 있는데 이 친구 Clip.none 으로 해놓거나 이러면 위젯이 잘려서 보이지 않을 때 보이게 되니 참고 바란다.

 

이렇게 간단한 BoxFit 기능을 제공해 주는 Fitted class 를 알아보았다. 도움이 되었길 바라며 마치겠다.

반응형
반응형