01 · Flutter package
full_svg_flutter
Оставить SVG исходным форматом внутри Flutter.
Зачем он нужен
Статические иконки — лишь малая часть SVG. Продуктовые ассеты могут опираться на SMIL, CSS-анимацию, морфинг, фильтры, текст или встроенный JavaScript-плеер. Конвертация плодит второй источник истины, WebView — вторую систему рендеринга.
Установка
flutter pub add full_svg_flutterБыстрый старт
import 'package:full_svg_flutter/full_svg_flutter.dart';
// Static or animated — the runtime detects the document.
FSvgPicture.asset(
'assets/hero.svg',
width: 240,
semanticsLabel: 'Product illustration',
);
// Existing static flutter_svg usage can keep the familiar API.
SvgPicture.asset('assets/icon.svg');Покрытие
- Static SVG and DOM-preserving rendering
- SMIL and CSS @keyframes animation
- Path morphing and motion paths
- All 17 SVG filter primitives
- Masks, clipping, gradients, patterns, and rich text
- Inline JavaScript and SVGator exports
- Playback control and SVG <view> navigation
- flutter_svg-compatible static API
Как устроен
Пакет разбирает SVG-документ в собственную модель с сохранением DOM, вычисляет стили и состояние анимации и рисует средствами Flutter. Статический и анимированный контент идут через один движок. JavaScript запускается лениво и только при наличии элемента script.
Когда использовать
- Вы получаете анимированные SVG или экспорты SVGator и не можете поменять исходный формат.
- Нужна точность фильтров, масок, текста или анимации, а не только статические иконки.
- Нужен знакомый API в духе flutter_svg и путь миграции без WebView.
Карта API
FSvgPicture- Основной виджет для статических и анимированных ассетов из asset, сети, строки, файла или байтов.
SvgPicture- Статическая точка входа, совместимая с flutter_svg.
AnimatedSvgController- Запуск, пауза, перемотка, скорость, направление и переключение SVG-видов.
renderSvgToPicture- Запись SVG в Picture для кастомной отрисовки или растеризации.
svg.cache- Настраиваемый кэш декодированных исходников, общий для виджетов.
Знать до релиза
- Это SVG-рантайм, а не полный DOM браузера: foreignObject и зависящие от браузера фреймворки вне области применения.
- Сложные фильтры и текст со смешанным направлением письма проверяйте глазами до релиза.