[flutter] flutter_svg에서 그림자 효과를 조절하는 방법은?
flutter_svg
는 Flutter 앱에서 SVG 이미지를 표시하는 데 사용되는 라이브러리입니다. 그러나 flutter_svg
자체에는 그림자 효과를 조절하는 기능이 없습니다. 대신 SVG 이미지에 그림자를 표현하려면 다른 접근 방식이 필요합니다.
해결 방법
SVG 이미지에 그림자를 추가하는 방법은 두 가지가 있습니다.
1. SVG 코드에 직접 그림자 추가
SVG 이미지 파일의 코드를 열어 <filter>
요소를 사용하여 그림자를 정의할 수 있습니다. 이후 <feGaussianBlur>
와 <feOffset>
등의 필터를 사용하여 그림자의 크기와 위치를 조절할 수 있습니다.
예시:
<svg width="200" height="200"
xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="f1" x="0" y="0" width="200%" height="200%">
<feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" />
<feBlend in="SourceGraphic" in2="offOut" mode="normal" />
</filter>
</defs>
<rect width="90" height="90" stroke="green" fill="yellow" filter="url(#f1)" />
</svg>
이렇게하면 SVG 이미지 자체에 그림자 효과를 포함시킬 수 있습니다.
2. Stack을 사용하여 그림자 레이어 추가
Flutter 앱에서 flutter_svg
위에 Container
나 Card
와 같은 위젯을 겹쳐서 사용하여 그림자 효과를 시각적으로 구현할 수 있습니다. 이를 위해 Stack
위젯을 사용하여 SVG 이미지와 그림자를 겹쳐 표시할 수 있습니다.
예시:
Stack(
children: [
SvgPicture.asset('assets/image.svg'),
Container(
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3),
),
],
),
),
],
)
이런 식으로 Stack
을 사용하면 SVG 이미지 위에 그림자를 추가할 수 있습니다.
마무리
이제 flutter_svg
를 사용하면서 SVG 이미지에 그림자 효과를 조절하는 방법을 알게 되었습니다. SVG 코드에 그림자를 직접 추가하거나, Flutter의 위젯을 활용하여 그림자를 겹쳐 표시하는 방법 등을 사용할 수 있습니다.