Flutter SVG 렌더링


90

내 flutter 응용 프로그램에 SVG 소스가있는 이미지를 추가해 보았습니다.

new AssetImage("assets/images/candle.svg"))

하지만 시각적 인 피드백을받지 못했습니다. Flutter에서 SVG 그림을 어떻게 렌더링 할 수 있습니까?


4
사용에 간단한을 사용하는 시도 flutter_svg 0.14.0 가 여기에 매력을 추가 정보를 원하시면처럼 작동 패키지 pub.dev/packages/flutter_svg 이 남자에게 모든 감사 github.com/dnfield 다트에 크롬의 SVG 렌더링 논리를 포팅
maheshmnj

답변:


63

Flutter는 현재 SVG를 지원하지 않습니다. 업데이트는 1831 호 를 따르십시오 .

벡터 드로잉이 절대적으로 필요한 경우 API를 사용하여 그리는 방법의 예로 Flutter 로고 위젯Canvas보거나 네이티브 측에서 이미지를 래스터 화하여 Flutter에 비트 맵으로 전달할 수 있지만, 현재로서는 가장 좋은 방법은 다음과 같습니다. 고해상도 래스터 화 된 자산 이미지를 포함합니다.


또한 색상이 필요하지 않은 경우 아이콘 패키지가 수행하는 방식으로 글꼴 경로를 항상 이동할 수 있습니다.
prodaea

잘 결국 그는 단순히 어떤 SVG 라이브러리는 이와 같은 할 수있는 SVG 이미지를 렌더링 할 필요가 pub.dev/packages/flutter_svg
maheshmnj

이 문제는 2016 년 2 월 13 일부터 시작되었습니다. 얼마나 기다려야합니까?
BloodLoss

70

글꼴은 많은 경우에 훌륭한 옵션입니다.

캔버스에 SVG를 렌더링하는 라이브러리 작업을 해왔습니다. 여기에서 사용할 수 있습니다. https://github.com/dnfield/flutter_svg

현재 API는 다음과 같습니다.

new SvgPicture.asset('asset_name.svg')

asset_name.svg를 렌더링합니다 (예 : a SizedBox). 당신은 또한 지정할 수 있습니다 colorblendMode자산 염색에 대한 ..

이제 펍에서 사용할 수 있으며 최소 Flutter 버전 0.3.6에서 작동합니다. 모든 경우는 아니지만 많은 경우를 처리합니다. 업데이트 및 파일 문제는 GitHub 저장소를 참조하세요.

Colin Jackson이 참조한 원래 GitHub 문제는 실제로 Flutter의 SVG에 주로 초점을 맞추려는 것이 아닙니다. 여기에 또 다른 문제를 열었습니다 : https://github.com/flutter/flutter/issues/15501


주제에서 약간 벗어 났지만 iOS를 지원합니까? 내가 아는 한 iOS는 PDF 형식의 벡터를 지원하므로 이것이 iOS에서 벡터를 렌더링
하는데도

3
Flutter가 지원하는 모든 플랫폼에서 작동합니다. 그것은 모두 Canvas방법을 사용하여 Dart로 작성되었습니다 .
Dan Field

1
최신 flutter stable을 지원하지 않는 이유 미리보기
minigeek

안녕하세요 Dan, -dart : svg library-api.dart.dev/stable/2.9.2/dart-svg/dart-svg-library.html에 대한 지원도 추가 할 수 있습니까 ? flutter는 dart2를 지원합니까? 여러 개의 SVGElement를 모두 하나의 큰 직렬화 된 문자열로 결합한 다음 라이브러리를 사용하여 SVG를 렌더링하고
싶습니다

dart : svg는 HTML 및 dart2js와 함께 사용됩니다. 이것과는 매우 다릅니다.
Dan Field

25

Flutter 커뮤니티의 개발자는 svg 파일을 처리하기 위해 lib를 만들었습니다. 우리는 그것을 다음과 같이 사용할 수 있습니다.

new SvgPicture.asset(
  'assets/images/candle.svg',
  height: 20.0,
  width: 20.0,
  allowDrawingOutsideViewBox: true,
),

여기 에서 SVG 구현 의 작은 예를 찾았 습니다 .


5
참고로-이것은 공식 / 자사 플러그인이 아닙니다. 즉, 많은 일반적인 사용 사례를 지원해야합니다.
Dan Field

21

현재 해결 방법은 글꼴을 사용하는 것입니다.

https://icomoon.io/

  fonts:
   - family: icomoon
     fonts:
       - asset: assets/fonts/icomoon.ttf

사용법

  static const IconData TabBarHome= const IconData(0xe906, fontFamily: 'icomoon');
  static const IconData TabBarExplore= const IconData(0xe902, fontFamily: 'icomoon');

### 교체 예 : (906)


9

당신은 단계 아래를 따를 수
- 방문 http://fluttericon.com을
- 당신의 SVG 아이콘을 업로드
- 다운로드 버튼을 클릭
- 당신이 두 개의 파일 얻을 것이다
1. iconname.dart
2. iconname.ttf 글꼴 파일
- 플러터에서이 파일을 사용을 & import iconname.dart


3

플레어를 사용하여 애니메이션을 만들고 .flr을 자산으로 가져올 수 있습니다.

import 'package:flare_flutter/flare_actor.dart';
class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return new FlareActor("assets/Filip.flr", alignment:Alignment.center, fit:BoxFit.contain, animation:"idle");
  }
}

flare_flutter https://pub.dev/packages/flare_flutter 방문


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.