Próbowałem dodać obraz ze źródłem SVG do mojej aplikacji flutter.
new AssetImage("assets/images/candle.svg"))
Ale nie otrzymałem żadnych wizualnych informacji zwrotnych. Jak mogę renderować obraz SVG we Flutter?
Odpowiedzi:
Flutter obecnie nie obsługuje formatu SVG. Śledź wydanie 1831, aby uzyskać aktualizacje.
Jeśli absolutnie potrzebujesz rysowania wektorowego, możesz zobaczyć widżet Flutter Logo jako przykład rysowania za pomocą Canvas
interfejsu API lub rasteryzować obraz po stronie natywnej i przekazać go Flutterowi jako bitmapę, ale na razie najlepszym rozwiązaniem jest prawdopodobnie osadzać rasteryzowane obrazy zasobów o wysokiej rozdzielczości.
Czcionki są świetną opcją w wielu przypadkach.
Pracowałem nad biblioteką do renderowania SVG na płótnie, dostępną tutaj: https://github.com/dnfield/flutter_svg
API w tej chwili wyglądałoby mniej więcej tak
new SvgPicture.asset('asset_name.svg')
do renderowania nazwa_zasobu.svg (dopasowana do jego rodzica, np. a SizedBox
). Możesz również określić a color
i blendMode
dla zabarwienia zasobu.
Jest teraz dostępny w pubie i działa z minimum Flutter w wersji 0.3.6. Obsługuje wiele przypadków, ale nie wszystko - zobacz repozytorium GitHub, aby uzyskać aktualizacje i zgłosić problemy.
Oryginalny problem z GitHubem, do którego odwołuje się Colin Jackson, tak naprawdę nie ma skupiać się głównie na SVG we Flutterze. W tym celu otworzyłem kolejny numer: https://github.com/flutter/flutter/issues/15501
Canvas
metod.
Programiści ze społeczności Flutter stworzyli bibliotekę do obsługi plików svg. Możemy go użyć jako
new SvgPicture.asset(
'assets/images/candle.svg',
height: 20.0,
width: 20.0,
allowDrawingOutsideViewBox: true,
),
Znalazłem tutaj mały przykład implementacji SVG .
Obecnie rozwiązaniem jest używanie czcionek
fonts:
- family: icomoon
fonts:
- asset: assets/fonts/icomoon.ttf
Użytkowanie
static const IconData TabBarHome= const IconData(0xe906, fontFamily: 'icomoon');
static const IconData TabBarExplore= const IconData(0xe902, fontFamily: 'icomoon');
Zastąp ###, np. (906)
Możesz wykonać poniższe kroki
- odwiedź http://fluttericon.com
- prześlij swoje ikony SVG
- kliknij przycisk pobierania
- otrzymasz dwa pliki
1. iconname.dart
2. iconname.ttf plik czcionki
- użyj tego pliku w programie flutter & import iconname.dart
Możesz użyć flary do tworzenia animacji i po prostu zaimportować .flr jako zasób
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");
}
}
odwiedź stronę flare_flutter https://pub.dev/packages/flare_flutter
Możesz użyć tej biblioteki do renderowania obrazów SVG - https://pub.dev/packages/flutter_svg
Przykład -
Container(
child: SvgPicture.asset("assets/images/yourImage.svg")
)
flutter_svg 0.14.0
pakietu, który działa jak urok więcej informacji tutaj pub.dev/packages/flutter_svg , wszystko dzięki temu facetowi github.com/dnfield, który przeniósł logikę renderowania svg chrome do darta