FlutterでSVG画像を表示する方法はいくつかありますが、svg_provider
パッケージを使えば、SVGファイルをImage
ウィジェットで簡単に扱えるようになります。
ここでは、svg_provider
の基本的な使い方と、コード例を紹介します。
1. svg_providerとは
通常、FlutterでSVG画像を表示するにはflutter_svg
パッケージを使う必要がありますが、これはSvgPicture
ウィジェット専用です。
一方で、svg_provider
を使えば、Image
ウィジェットやBoxDecoration
などImageProviderを必要とする場面でSVG画像が使えるようになります。
2. インストール方法
pubspec.yaml
に以下を追加します。
dependencies:
svg_provider: ^1.0.3 # バージョンは pub.dev で最新を確認してください
その後、以下を実行します。
flutter pub get
また、SVGをパースするために、flutter_svg
パッケージも内部的に使われます。
3. 使い方(ローカルSVGの表示)
以下は、assets/sample.svg
というSVGファイルを表示する例です。
assetsの設定
pubspec.yaml
にアセットを追加します。
flutter:
assets:
- assets/sample.svg
表示コード
import 'package:flutter/material.dart';
import 'package:svg_provider/svg_provider.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: SvgProviderExample(),
);
}
}
class SvgProviderExample extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('SVG Provider Example')),
body: Center(
child: Image(
image: Svg('assets/sample.svg'),
width: 150,
height: 150,
),
),
);
}
}
4. 応用例:BoxDecorationにSVGを使う
ImageProvider
として扱えるため、背景画像としてSVGを設定することも可能です。
Container(
width: 200,
height: 200,
decoration: BoxDecoration(
image: DecorationImage(
image: Svg('assets/sample.svg'),
fit: BoxFit.cover,
),
),
);
5. 注意点
- SVGの内容によっては、
flutter_svg
がサポートしていない機能により表示できないことがあります(フィルター、アニメーションなど)。 - ネットワーク経由のSVGは直接扱えないため、対応したい場合は別パッケージ(例:
flutter_svg
のSvgPicture.network
)を使うのが良いです。
まとめ
svg_provider
を使えば、Image
ウィジェットやBoxDecoration
でSVG画像を簡単に使うことができます。flutter_svg
と組み合わせて使えば、アプリ内のSVG表示の柔軟性が大きく広がります。
SVGをより汎用的に使いたい方は、ぜひ導入してみてください。