본문 바로가기
프레임워크/Flutter

[Flutter]SVG 활용을 위한 flutter_svg 사용방법, SVG 화질 저하 원인

by 연어바케트 2024. 5. 8.
반응형

SVG는 웹과 모바일 애플리케이션에서 많이 사용되는 이미지 포맷 중 하나다. 

XML기반의 벡터 이미지 포맷으로 크기 변환 시 화질이 저화되지 않는 장점을 가지고 있어서 많이 사용한다. 

하지만 flutter의 기본위젯으로 SVG파일을 직접적으로 지원하지 않지만,

flutter_svg라이브러리를 통해서 사용 할 수 있다. 

 

 

flutter_svg | Flutter package

An SVG rendering and widget library for Flutter, which allows painting and displaying Scalable Vector Graphics 1.1 files.

pub.dev

 

기본구조 

final Widget svg = SvgPicture.asset(
  assetName,
);

 

 

사용방법

설치

 - 터미널 창에 설치 코드 입력

flutter pub add flutter_svg

 

assets 설정

 - assets 폴더 아래 내가 원하는 폴더를 만들어 준다.

 

해당 폴더 아래에SVG 파일을 추가 한다. 

 


- pubspec.yaml 에 assets 폴더를 사용할거라는 것을 명시, svg 폴더를 사용할 거기 때문에 assets/svg/를 입력해준다. 
svg뒤에 / 를 꼭 넣어줘야 한다.



사용

class SvgPracticePage extends StatelessWidget {
  const SvgPracticePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(child: SvgPicture.asset('assets/svg/alert-circle.svg')),
    );
  }
}


svg 파일이 추가된것을 확인 할 수 있다. 

 

 

크기 변경

 - height, width를 추가 해주면 svg 파일을 크기를 변경 할 수 있다. 

class SvgPracticePage extends StatelessWidget {
  const SvgPracticePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
          child: SvgPicture.asset(
        'assets/svg/alert-circle.svg',
        height: 50,
        width: 50,
      )),
    );
  }
}

 

 

 

색상 변경 방법

class SvgPracticePage extends StatelessWidget {
  const SvgPracticePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
          child: SvgPicture.asset(
        'assets/svg/alert-circle.svg',
        height: 50,
        width: 50,
        colorFilter: ColorFilter.mode(Colors.black, BlendMode.srcIn),
      )),
    );
  }
}

 

 colorFilter: ColorFilter.mode(Colors.black, BlendMode.srcIn) 를 사용하여

Color를 변경 할 수 있지만, 이는 조심히 사용해야한다. 

 

colorFilter를 사용했을 시, 화질 저하가 일어나니 이 사항을 꼭 참고해야한다. 

이것 때문에 고생을 조금 했다. 

반응형

댓글