Libreria di analisi, rendering e widget SVG per Flutter

Blog

Libreria di analisi, rendering e widget SVG per Flutter

flutter_svg.Disegna SVG (e alcuni File Android VectorDrawable (XML)) su un widget Flutter.



Iniziare

Questa è una libreria di rendering nativa di Dart. Problemi/PR verranno sollevati in Flutter e flutter/engine se necessario per le funzionalità che non sono buone candidate per le implementazioni Dart (specialmente se sono impossibili da implementare senza il supporto del motore). Tuttavia, non tutto ciò che Skia può fare facilmente deve essere fatto da Skia; ad esempio, la logica di analisi del percorso qui non è molto più lenta rispetto a quella nativa e Skia non esegue sempre un lavoro accelerato dalla GPU di basso livello dove potresti pensare che sia (ad esempio Dash Paths).

Tutti gli SVG in |_+_| la cartella (eccetto quella correlata al testo) ora ha corrispondenti.png'>final String assetName = 'assets/image.svg'; Widget finale svg = SvgPicture.asset( assetName, semanticsLabel: 'Acme Logo' );

Puoi colorare/tirare l'immagine in questo modo:



assets/

Il segnaposto predefinito è una casella vuota (|_+_|) - sebbene se un |_+_| oppure |_+_| è specificato su |_+_|, un |_+_| verrà invece utilizzato (il che garantisce una migliore esperienza di layout). Al momento non è possibile mostrare visivamente un errore, tuttavia gli errori verranno registrati correttamente nella console in modalità di debug.

come acquistare trx tron

Puoi anche specificare un widget segnaposto. Il segnaposto verrà visualizzato durante l'analisi/il caricamento (normalmente rilevante solo per l'accesso alla rete).



final String assetName = 'assets/up_arrow.svg'; final Widget svgIcon = SvgPicture.asset( assetName, color: Colors.red, semanticsLabel: 'A red up arrow' );

Se desideri eseguire il rendering dell'SVG su un'altra tela, puoi fare qualcosa come:

fantasia premier league api
LimitedBox

Il |_+_| aiuta ad automatizzare questa logica e fornisce alcuni wrapper di convenienza per ottenere risorse da più fonti e memorizzare nella cache il risultante |_+_|. Non rende i dati a un |_+_| in qualsiasi punto ; puoi certamente farlo in Flutter, ma perdi parte dei vantaggi di avere un formato vettoriale per cominciare.

Mentre sto facendo ogni sforzo per evitare di modificare inutilmente l'API, non è ancora garantito che sia stabile (da qui la versione pre-1.0.0). Ad oggi, il cambiamento più grande è la deprecazione di |_+_| widget a favore di |_+_| - è diventato molto confuso mantenere quel nome, poiché |_+_|s sono il meccanismo sottostante per il rendering piuttosto che |_+_|s.

Vedere main.dart per un campione completo.

Casi d'uso

  • Il tuo designer crea una risorsa vettoriale che desideri includere senza convertirla in 5 diverse risoluzioni di formato raster.
  • Il tuo disegno vettoriale è pensato per essere statico e non (o forse minimamente) interattivo.
  • Si desidera caricare SVG dinamicamente da origini di rete in fase di esecuzione.
  • Vuoi dipingere i dati SVG e renderli in un'immagine.

TUTTO QUANTO

Questo elenco non è molto ben ordinato. Sto principalmente raccogliendo cose che sembrano interessanti o utili, o dove ho ricevuto una richiesta per riparare qualcosa/esempio di qualcosa che è rotto.

  • Supporto di testo (parzialmente implementato).
  • Supporta gradienti radiali che utilizzano percentuali negli offset.
  • Percorso tratteggiato con valori percentuali dasharray (sono necessari buoni esempi).
  • Supporto per visualizzazione/visibilità. La mia impressione è che questo venga solitamente utilizzato più per l'interattività specifica di SVG, che non è supportata o pianificata.
  • Eredità delle proprietà ereditabili (necessario? preprocesso? progressi significativi, ancora qualche spigolo, in particolare per le definizioni).
  • Supporto per CSS/stili minimi? Guarda anche usvg (attributo di stile parziale per lo più supportato).
  • Marcatori.
  • Filtri/effetti (richiedono modifiche al motore a monte, ma fattibili).
  • Supporto Android Vector Drawable oltre PoC: sono disposto a dedicare più tempo a questo se c'è effettivamente richiesta, ma non si verifica spesso.

Probabilmente fuori campo/non obiettivi

  • Animazioni SMIL. Sembra solo una follia. Penso che sarà possibile animare l'SVG ma probabilmente in un modo più guidato da Flutter.
  • Interattività/eventi in SVG.
  • Supporto CSS completo (qualsiasi?) - preelabora i tuoi SVG (forse con usvg o perlustrare per sbarazzarsi di tutti i CSS?).
  • Script in SVG
  • Elementi estranei
  • Proprietà di rendering/suggerimenti

Configurazione consigliata per Adobe Illustrator SVG

  • In Stile: scegli Attributi di presentazione invece di CSS in linea perché CSS non è completamente supportato.
  • In Immagini: scegli Incorporato non collegato ad altro file per ottenere un singolo svg senza dipendenza da altri file.
  • In ID oggetti: scegli i nomi dei livelli per aggiungere ogni nome di livello ai tag svg oppure puoi usare il minimo, è facoltativo.

Attribuzione del campione SVG

SVG in |_+_| tirato da File di esempio W3

SVG in |_+_| fornito da @deborah-ufw

SVG in |_+_| sono estratti da esempi banali o generati per testare le funzionalità di base - alcuni di essi provengono direttamente dalle specifiche SVG 1.1. Alcuni sono anche venuti o sono stati adattati da problemi sollevati in questo repository.

SVG in |_+_| sono tirati da Wikimedia Commons

miglior libro per quadro primaverile

Disegnabili Android in |_+_| sono estratti dalla documentazione e dagli esempi di Android.

Il logo Flutter creato sulla base del Widget Logo Flutter © Google.

Il logo Dart è di dartlang.org © Google

SVG in |_+_| provengono Google i18n noto-emoji , concesso in licenza con la licenza Apache.

js esce dal ciclo for

Si prega di inviare SVG che non possono essere visualizzati correttamente (ad es.

Scarica i dettagli:

Autore: dnfield

GitHub: https://github.com/dnfield/flutter_svg

#flutter #dart