Tentei adicionar uma imagem com uma fonte SVG ao meu aplicativo de flutter.
new AssetImage("assets/images/candle.svg"))
Mas não recebi nenhum feedback visual. Como posso renderizar uma imagem SVG no Flutter?
Respostas:
Flutter atualmente não oferece suporte a SVG. Siga a edição 1831 para atualizações.
Se você realmente precisa de desenho vetorial, pode ver o widget Flutter Logo como um exemplo de como desenhar usando a Canvas
API ou rasterizar sua imagem no lado nativo e passá-la para o Flutter como um bitmap, mas por agora sua melhor aposta é provavelmente incorporar imagens de ativos rasterizados de alta resolução.
flutter_svg
Pacote do usuário
As fontes são uma ótima opção para muitos casos.
Estou trabalhando em uma biblioteca para renderizar SVGs em uma tela, disponível aqui: https://github.com/dnfield/flutter_svg
A API a partir de agora seria algo como
new SvgPicture.asset('asset_name.svg')
para renderizar asset_name.svg (dimensionado para seu pai, por exemplo, a SizedBox
). Você também pode especificar um color
e blendMode
para tingir o ativo.
Agora está disponível no pub e funciona no mínimo com a versão 0.3.6 do Flutter. Ele lida com vários casos, mas não tudo - consulte o repositório do GitHub para atualizações e problemas de arquivo.
O problema original do GitHub referenciado por Colin Jackson realmente não foi feito para se concentrar principalmente em SVG no Flutter. Abri outra edição aqui para isso: https://github.com/flutter/flutter/issues/15501
Canvas
métodos.
Os desenvolvedores da comunidade Flutter criaram uma biblioteca para lidar com arquivos svg. Podemos usá-lo como
new SvgPicture.asset(
'assets/images/candle.svg',
height: 20.0,
width: 20.0,
allowDrawingOutsideViewBox: true,
),
Encontrei um pequeno exemplo de implementação SVG aqui .
A solução agora é usar fontes
fonts:
- family: icomoon
fonts:
- asset: assets/fonts/icomoon.ttf
Useage
static const IconData TabBarHome= const IconData(0xe906, fontFamily: 'icomoon');
static const IconData TabBarExplore= const IconData(0xe902, fontFamily: 'icomoon');
Substitua o ### por exemplo (906)
Você pode seguir os passos abaixo
- visite http://fluttericon.com
- carregue seus ícones SVG
- clique no botão de download
- você obterá dois arquivos
1. iconname.dart
2. arquivo de fonte iconname.ttf
- use este arquivo em flutter & import iconname.dart
Você pode usar o flare para criar animações e apenas importar .flr como um ativo
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");
}
}
visite flare_flutter https://pub.dev/packages/flare_flutter
Você pode usar esta biblioteca para renderizar imagens SVG - https://pub.dev/packages/flutter_svg
Exemplo -
Container(
child: SvgPicture.asset("assets/images/yourImage.svg")
)
flutter_svg 0.14.0
pacote simples de usar funciona como charme mais informações aqui pub.dev/packages/flutter_svg , tudo graças a esse cara github.com/dnfield que portou a lógica de renderização svg do cromo para o dardo