30
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

FlutterでSVG画像を表示する

Last updated at Posted at 2020-01-10

SVG画像を表示するには

  • SVGファイルをassetsに保存する
  • pubspeck.ymlにSVGファイルパスを追加する
  • flutter_svg パッケージを使用して画面表示する

SVGファイルをassetsに保存する

プロジェクト内の assetsディレクトリ にsvg画像を保存する。

assetsディレクトリがなければ作成する。
自分はなかったので作成した(多分)

svg画像はフリー画像を適当に探して、これ を使った。
一応参考に画像を載せておく。
basket.png

pubspeck.ymlを修正

これを忘れるとSVG画像をコードから認識できない。

pubspeck.yml
flutter:
  assets:
   - assets/ # <- これでassets直下を一気に追加できる、個別指定の必要なし

この作業は忘れがちなので注意!

flutter_svg パッケージを使用して画面表示する

pubspeck.yml に flutter_svg を追加する。

pubspeck.yml
dependencies:
  flutter:
    sdk: flutter
  flutter_svg: ^0.15.0 # <-追加

パッケージのバージョンはサイトで確認して最新版を調べること
https://pub.dev/packages/flutter_svg

あとはコードからSVGを表示することができる。

  SvgPicture.asset(
    'assets/commerce-and-shopping.svg',
    semanticsLabel: 'shopping',
    width: 50,
    height: 50,
  ),

2020-01-10-12-05-27.png

widthとheightは指定しないとsvgが最大サイズで表示されるので注意
2020-01-10-12-05-40.png

semanticsLabelはあってもなくてもよい。

SVGをIconButtonに使いたいとき

IconButton.icon に SvgPicture.asset()を使うことができる。
これにより円形のリップルエフェクトも適用され、ボタンとして使いやすくなる。

IconButton(
  // SvgPictureを指定できる
  icon: SvgPicture.asset(
    'assets/commerce-and-shopping.svg',
    semanticsLabel: 'shopping',
    width: 50,
    height: 50,
  ),
  onPressed: () {},
),

備考

他にも、ネットワーク越しにSVGを表示できたり、SVG画像のパスをコードで作成して表示したり、と色々なことができるので、公式サンプルを参考にするといい。
https://github.com/dnfield/flutter_svg/blob/master/example/lib/main.dart

使用したコード

30
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?