Rendering SVG svolazzante


92

Ho provato ad aggiungere un'immagine con una sorgente SVG alla mia applicazione flutter.

new AssetImage("assets/images/candle.svg"))

Ma non ho ricevuto alcun feedback visivo. Come posso eseguire il rendering di un'immagine SVG in Flutter?


4
prova a usare un flutter_svg 0.14.0 pacchetto semplice da usare funziona come un fascino maggiori informazioni qui pub.dev/packages/flutter_svg , tutto grazie a questo ragazzo github.com/dnfield che ha portato la logica di rendering svg di chrome su dart
maheshmnj

Risposte:


65

Flutter attualmente non supporta SVG. Segui il numero 1831 per gli aggiornamenti.

Se hai assolutamente bisogno di un disegno vettoriale puoi vedere il widget Flutter Logo come esempio di come disegnare usando l' CanvasAPI, o rasterizzare la tua immagine sul lato nativo e passarla a Flutter come bitmap, ma per ora la soluzione migliore è probabilmente quella di incorporare immagini di asset rasterizzate ad alta risoluzione.


Inoltre, se non hai bisogno del colore, puoi sempre seguire il percorso dei caratteri come fa il pacchetto Icons.
prodaea

beh, dopotutto ha bisogno di rendere semplicemente un'immagine svg che qualsiasi libreria svg potrebbe fare come questa pub.dev/packages/flutter_svg
maheshmnj

la questione è aperta dal 13 febbraio 2016. quanto tempo dobbiamo aspettare?
BloodLoss

@BloodLoss guarda la risposta di Dan Field. flutter_svgPacchetto utente
kovalyovi

75

I caratteri sono un'ottima opzione per molti casi.

Ho lavorato a una libreria per il rendering di SVG su una tela, disponibile qui: https://github.com/dnfield/flutter_svg

L'API al momento sarebbe simile a

new SvgPicture.asset('asset_name.svg')

per rendere asset_name.svg (dimensionato al suo genitore, ad esempio a SizedBox). Puoi anche specificare un colore blendModeper colorare la risorsa.

È ora disponibile su pub e funziona con un minimo di Flutter versione 0.3.6. Gestisce un sacco di casi ma non tutto: vedere il repository GitHub per aggiornamenti e problemi di file.

Il problema originale di GitHub a cui fa riferimento Colin Jackson non è pensato per essere incentrato principalmente su SVG in Flutter. Ho aperto un altro numero qui per questo: https://github.com/flutter/flutter/issues/15501


Un po 'fuori tema ma questo ha il supporto iOS? Per quanto ne so, iOS supporta i vettori in formato PDF, quindi sono solo curioso di sapere se questo può essere utilizzato anche per il rendering di vettori su iOS
MRainzo

3
Dovrebbe funzionare su qualsiasi piattaforma supportata da Flutter. È tutto scritto in Dart usando Canvasmetodi.
Dan Field

1
perché non supporta l'ultima flutter stabile invece dell'anteprima
minigeek

Ciao Dan, puoi anche aggiungere il supporto per - dart: svg library - api.dart.dev/stable/2.9.2/dart-svg/dart-svg-library.html ? flutter ha il supporto per dart2? Voglio avere più SVGElement tutti combinati in una grande stringa serializzata e quindi utilizzare la tua libreria per eseguire il rendering
dell'SVG

dart: svg viene utilizzato con HTML e dart2js. È molto diverso da questo.
Dan Field

25

Gli sviluppatori della comunità Flutter hanno creato una libreria per gestire i file svg. Possiamo usarlo come

new SvgPicture.asset(
  'assets/images/candle.svg',
  height: 20.0,
  width: 20.0,
  allowDrawingOutsideViewBox: true,
),

Ho trovato un piccolo esempio di implementazione SVG qui .


5
Cordiali saluti, questo non è un plug-in ufficiale / di prima parte. Detto questo, dovrebbe supportare molti casi d'uso comuni.
Dan Field

21

La soluzione per ora è usare i caratteri

https://icomoon.io/

  fonts:
   - family: icomoon
     fonts:
       - asset: assets/fonts/icomoon.ttf

Utilizzo

  static const IconData TabBarHome= const IconData(0xe906, fontFamily: 'icomoon');
  static const IconData TabBarExplore= const IconData(0xe902, fontFamily: 'icomoon');

Sostituisci ### eg (906)


Come posso usarlo? diciamo che ho un file svg in asset / svg / mysvg.svg non posso sostituire l'esadecimale con il percorso. Il primo argomento è un int.
FrontMobe

9

Puoi seguire i passaggi seguenti
: visita http://fluttericon.com
- carica le tue icone SVG
- fai clic sul pulsante di download
- otterrai due file
1. iconname.dart
2. iconname.ttf file font
- usa questo file in flutter & import iconname.dart


3

Puoi usare Flare per creare animazioni e importare semplicemente .flr come risorsa

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");
  }
}

visita flare_flutter https://pub.dev/packages/flare_flutter


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.