質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Q&A

解決済

1回答

4093閲覧

【flutter】Container のbackgroundにSVG画像を設定したい

Tetsukick

総合スコア297

SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

0グッド

0クリップ

投稿2020/05/03 06:53

前提・実現したいこと

以下のようなコードで、Containerの背景にSVG画像を表示させたいです。

Dart

1 Container( 2 decoration: new BoxDecoration( 3 image: DecorationImage( 4 image: SvgPicture.asset('assets/walk_bg_rect.svg'), 5 ), 6 ), 7 ),

発生している問題・エラーメッセージ

Compiler message: lib/screens/walk_screen.dart:21:39: Error: The argument type 'SvgPicture' can't be assigned to the parameter type 'ImageProvider<dynamic>'.

補足情報(FW/ツールのバージョンなど)

以下の記事と同じ事象だと思いますが、、よくわからず、、
https://github.com/dnfield/flutter_svg/issues/152

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

https://stackoverflow.com/questions/58350389/flutter-converting-rawimage-to-something-that-extends-imageprovider

こちらも参考にして、以下のようにしてみました。

Dart

1import 'package:flutter_svg/flutter_svg.dart'; 2import 'package:flutter/services.dart' show rootBundle; 3---- 4 FutureBuilder<MemoryImage>( 5 future: (() async { 6 final rawSvg = await rootBundle.loadString('assets/walk_bg_rect.svg'); 7 final svgRoot = await svg.fromSvgString(rawSvg, rawSvg); 8 final picture = svgRoot.toPicture(); 9 final image = await picture.toImage(width, height); // 適切な値を指定する 10 final byteData = await image.toByteData(format: ImageByteFormat.png); 11 return MemoryImage(byteData.buffer.asUint8List()); 12 })(), 13 builder: (context, snapshot) { 14 return snapshot.hasData 15 ? Container( 16 decoration: BoxDecoration( 17 image: DecorationImage( 18 image: snapshot.data, 19 ), 20 ), 21 child: ~~, 22 ) 23 : Container(); 24 }, 25 ),

投稿2020/05/10 23:45

satokei

総合スコア1204

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tetsukick

2020/05/11 09:17

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問