Ich habe versucht, meiner Flatteranwendung ein Bild mit einer SVG-Quelle hinzuzufügen.
new AssetImage("assets/images/candle.svg"))
Aber ich habe kein visuelles Feedback bekommen. Wie kann ich ein SVG-Bild in Flutter rendern?
Antworten:
Flutter unterstützt SVG derzeit nicht. Folgen Sie der Ausgabe 1831 für Updates.
Wenn Sie unbedingt eine Vektorzeichnung benötigen, können Sie das Flutter-Logo-Widget als Beispiel für das Zeichnen mit der Canvas
API sehen oder Ihr Bild auf der nativen Seite rastern und als Bitmap an Flutter übergeben. Im Moment ist es jedoch wahrscheinlich die beste Wahl Betten Sie hochauflösende gerasterte Asset-Bilder ein.
flutter_svg
Benutzerpaket
Schriftarten sind in vielen Fällen eine gute Option.
Ich habe an einer Bibliothek gearbeitet, um SVGs auf einer Leinwand zu rendern, die hier verfügbar ist: https://github.com/dnfield/flutter_svg
Die API würde ab sofort ungefähr so aussehen
new SvgPicture.asset('asset_name.svg')
um render_name.svg zu rendern (Größe auf das übergeordnete Element, z SizedBox
. B. a ). Sie können auch ein color
und angebenblendMode
zum Abtönen des Assets .
Es ist jetzt im Pub erhältlich und funktioniert mit einem Minimum von Flutter Version 0.3.6. Es behandelt eine Reihe von Fällen, aber nicht alles - Updates und Dateien finden Sie im GitHub-Repo.
Die ursprüngliche GitHub-Ausgabe, auf die Colin Jackson verweist, soll sich eigentlich nicht in erster Linie auf SVG in Flutter konzentrieren. Ich habe hier eine andere Ausgabe dafür geöffnet: https://github.com/flutter/flutter/issues/15501
Canvas
Methoden geschrieben.
Entwickler aus der Flutter-Community haben eine Bibliothek für den Umgang mit SVG-Dateien erstellt. Wir können es als verwenden
new SvgPicture.asset(
'assets/images/candle.svg',
height: 20.0,
width: 20.0,
allowDrawingOutsideViewBox: true,
),
Ich habe hier ein kleines Beispiel für die SVG- Implementierung gefunden .
Die Problemumgehung besteht derzeit darin, Schriftarten zu verwenden
fonts:
- family: icomoon
fonts:
- asset: assets/fonts/icomoon.ttf
Verwendung
static const IconData TabBarHome= const IconData(0xe906, fontFamily: 'icomoon');
static const IconData TabBarExplore= const IconData(0xe902, fontFamily: 'icomoon');
Ersetzen Sie das ### zB (906)
Sie können die folgenden Schritte
ausführen
- besuchen Sie http://fluttericon.com
- laden Sie Ihre SVG-Symbole hoch
- klicken Sie auf den Download-Button
- Sie erhalten zwei Dateien
1. iconname.dart
2. iconname.ttf-Schriftartdatei
- verwenden Sie diese Datei in flutter & importiere iconname.dart
Sie können Flare verwenden, um Animationen zu erstellen und einfach .flr als Asset zu importieren
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");
}
}
Besuchen Sie flare_flutter https://pub.dev/packages/flare_flutter
Sie können diese Bibliothek zum Rendern von SVG-Bildern verwenden - https://pub.dev/packages/flutter_svg
Beispiel -
Container(
child: SvgPicture.asset("assets/images/yourImage.svg")
)
flutter_svg 0.14.0
Paket. Es funktioniert wie Charme. Weitere Informationen finden Sie hier. pub.dev/packages/flutter_svg , alles dank dieses Typen github.com/dnfield , der die SVG-Rendering-Logik des