Flutter SVG рендеринг

Я попытался добавить изображение с источником SVG в мое приложение флаттера.

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

Но я не получал никакой визуальной обратной связи. Как сделать изображение SVG в Flutter?

Ответ 1

В настоящее время Flutter не поддерживает SVG. Следуйте вопросу 1831 для обновлений.

Если вам абсолютно нужен векторный рисунок, вы можете увидеть виджет логотипа флаттера в качестве примера рисования с использованием API Canvas или растеризуйте свое изображение на родной стороне и передайте его флаттеру в виде растрового изображения, но на данный момент лучше всего разместить встроенные изображения растрированных изображений с высоким разрешением.

Ответ 2

Шрифты - отличный вариант для многих случаев.

Я работал над библиотекой для визуализации SVG на холсте, доступной здесь: https://github.com/dnfield/flutter_svg

API на данный момент будет выглядеть примерно так

new SvgPicture.asset('asset_name.svg')

отобразить asset_name.svg (по размеру соответствует его родителю, например, SizedBox). Вы также можете указать color и blendMode для тонирования blendMode.

Теперь он доступен в пабе и работает с минимальной версией Флаттера 0.3.6. Он обрабатывает множество случаев, но не все - см. Репозиторий GitHub для получения обновлений и проблем с файлами.

Оригинальная проблема GitHub, на которую ссылается Колин Джексон, на самом деле не предназначена для того, чтобы в первую очередь фокусироваться на SVG во Флаттере. Я открыл еще одну проблему для этого: https://github.com/flutter/flutter/issues/15501

Ответ 3

Разработчики из сообщества Flutter создали библиотеку для обработки файлов SVG. Мы можем использовать его как

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

Я нашел небольшой пример реализации SVG здесь.

Ответ 4

Обходной путь пока что использует шрифты

https://icomoon.io/

  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');

Заменить ### например (906)

Ответ 5

Шаг 1:

flutter_svg: ^0.12.4

Шаг 2:

import 'package:flutter_svg/flutter_svg.dart';

Шаг 3:

SizedBox.fromSize(
      child:  SvgPicture.asset(
        'assets/empty.svg',
      ),
      size: Size(300.0, 400.0),
    ),     

Ответ 6

привет, вы можете использовать плагин "flutter_svg": https://pub.dartlang.org/packages/flutter_svg

Просто и легко, а вы можете изменить цвет SVG.

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

Ответ 7

pubspeck.yaml

dependencies:
    flutter_svg: ^0.12.4

Код: стек и позиционируется, чтобы установить абсолютную позицию SVG

        Stack(
            children: <Widget>[
              Positioned(
                  right: 0,
                  child: IconButton(
                    icon: SvgPicture.asset('assets/profileView/iconAjustes.svg',
                        height: 30,
                        width: 30,
                        color: Colors.white, 
                        semanticsLabel: 'Ajustes Logo'
                      ),
                    onPressed: _onPrefsButtonPressed,
                  )
              ),
            ],
          )

Ответ 8

Вы можете использовать Flare для создания анимации и просто импортировать .flr как актив

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

посетите flare_flutter https://pub.dev/packages/flare_flutter

Ответ 9

Я использовал http://fluttericon.com/, его легко настроить, и есть много значков, также вы можете добавить свои собственные. Наконец, он сгенерирует шрифты и дартс с иконками.

Ответ 10

Вы можете выполнить следующие шаги
 - посетить http://fluttericon.com
 -загрузить иконки SVG
 - нажмите на кнопку загрузки
 - вы получите два файла
 1. iconname.dart
2. файл шрифта iconname.ttf
- использовать этот файл в флаттере импортировать iconname.dart

Ответ 11

Flutter не поддерживает SVG, но вы можете использовать пакет flutter_svg.

Добавьте это в ваш пакет pubspec.yaml:

dependencies:
  flutter_svg:

После этого запустите flutter pub get, чтобы получить зависимость. А затем импортируйте его в свой класс дартс:

import 'package:flutter_svg/flutter_svg.dart';

Ссылка на пакет: https://pub.dev/packages/flutter_svg

Ответ 12

Сначала добавьте этот пакет с последней версией в ваш файл pubspec.yaml https://pub.dev/packages/flutter_svg

как ниже

dependencies
flutter_svg: ^0.14.1

Напишите flutter pub, войдите в терминал, чтобы установить пакет

Затем добавьте пространство имен пакета на страницу, где вы хотите показать свое изображение SVG.

import 'package:flutter_svg/flutter_svg.dart';

затем добавьте следующие коды, чтобы отобразить svg на экране приложения

SvgPicture.asset(
'assets/Share and collect 1.svg', 
 height: 280, 
 width: 280, 
 color: Colors.red
),