SVG parsing, rendering, and widget library for Flutter

Overview

flutter_svg

Pub Build Status Coverage Status

Flutter Logo which can be rendered by this package!

Draw SVG (and some Android VectorDrawable (XML)) files on a Flutter Widget.

Getting Started

This is a Dart-native rendering library. Issues/PRs will be raised in Flutter and flutter/engine as necessary for features that are not good candidates for Dart implementations (especially if they're impossible to implement without engine support). However, not everything that Skia can easily do needs to be done by Skia; for example, the Path parsing logic here isn't much slower than doing it in native, and Skia isn't always doing low level GPU accelerated work where you might think it is (e.g. Dash Paths).

All of the SVGs in the assets/ folder (except the text related one(s)) now have corresponding PNGs in the golden/ folder that were rendered using flutter test tool/gen_golden.dart and compared against their rendering output in Chrome. Automated tests will continue to compare these to ensure code changes do not break known-good renderings.

Basic usage (to create an SVG rendering widget from an asset):

final String assetName = 'assets/image.svg';
final Widget svg = SvgPicture.asset(
  assetName,
  semanticsLabel: 'Acme Logo'
);

You can color/tint the image like so:

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

The default placeholder is an empty box (LimitedBox) - although if a height or width is specified on the SvgPicture, a SizedBox will be used instead (which ensures better layout experience). There is currently no way to show an Error visually, however errors will get properly logged to the console in debug mode.

You can also specify a placeholder widget. The placeholder will display during parsing/loading (normally only relevant for network access).

// Will print error messages to the console.
final String assetName = 'assets/image_that_does_not_exist.svg';
final Widget svg = SvgPicture.asset(
  assetName,
);

final Widget networkSvg = SvgPicture.network(
  'https://site-that-takes-a-while.com/image.svg',
  semanticsLabel: 'A shark?!',
  placeholderBuilder: (BuildContext context) => Container(
      padding: const EdgeInsets.all(30.0),
      child: const CircularProgressIndicator()),
);

If you'd like to render the SVG to some other canvas, you can do something like:

import 'package:flutter_svg/flutter_svg.dart';
final String rawSvg = '''<svg viewBox="...">...</svg>''';
final DrawableRoot svgRoot = await svg.fromSvgString(rawSvg, rawSvg);

// If you only want the final Picture output, just use
final Picture picture = svgRoot.toPicture();

// Otherwise, if you want to draw it to a canvas:
// Optional, but probably normally desirable: scale the canvas dimensions to
// the SVG's viewbox
svgRoot.scaleCanvasToViewBox(canvas);

// Optional, but probably normally desireable: ensure the SVG isn't rendered
// outside of the viewbox bounds
svgRoot.clipCanvasToViewBox(canvas);
svgRoot.draw(canvas, size);

The SvgPicture helps to automate this logic, and it provides some convenience wrappers for getting assets from multiple sources and caching the resultant Picture. It does not render the data to an Image at any point; you certainly can do that in Flutter, but you then lose some of the benefit of having a vector format to begin with.

While I'm making every effort to avoid needlessly changing the API, it's not guarnateed to be stable yet (hence the pre-1.0.0 version). To date, the biggest change is deprecating the SvgImage widgets in favor of SvgPicture - it became very confusing to maintain that name, as Pictures are the underlying mechanism for rendering rather than Images.

See main.dart for a complete sample.

Check SVG compatibility

As not all SVG features are supported by this library (see below), sometimes we have to dynamically check if an SVG contains any unsupported features resulting in broken images. You might also want to throw errors in tests, but only warn about them at runtime. This can be done by using the snippet below:

final SvgParser parser = SvgParser();
try {
  parser.parse(svgString, warningsAsErrors: true);
  print('SVG is supported');
} catch (e) {
  print('SVG contains unsupported features');
}

Note: The library currently only detects unsupported elements (like the <style>-tag), but not unsupported attributes.

Use Cases

  • Your designer creates a vector asset that you want to include without converting to 5 different raster format resolutions.
  • Your vector drawing is meant to be static and non (or maybe minimally) interactive.
  • You want to load SVGs dynamically from network sources at runtime.
  • You want to paint SVG data and render it to an image.

TODO

This list is not very well ordered. I'm mainly picking up things that seem interesting or useful, or where I've gotten a request to fix something/example of something that's broken.

  • Support Radial gradients that use percentages in the offsets.
  • Dash path with percentage dasharray values (need good examples).
  • Markers.
  • Filters/effects (will require upstream engine changes, but doable).
  • Android Vector Drawable support beyond PoC - I'm willing to put more time into this if there's actually demand, but it doesn't come up often.

Out of scope/non-goals

  • SMIL animations. That just seems crazy. I think it'll be possible to animate the SVG but probably in a more Flutter driven way.
  • Interactivity/events in SVG.
  • Any CSS support - preprocess your SVGs (perhaps with usvg or scour to get rid of all CSS?).
  • Scripting in SVGs
  • Foreign elements
  • Rendering properties/hints

Recommended Adobe Illustrator SVG Configuration

  • In Styling: choose Presentation Attributes instead of Inline CSS because CSS is not fully supported.
  • In Images: choose Embded not Linked to other file to get a single svg with no dependency to other files.
  • In Objects IDs: choose layer names to add every layer name to svg tags or you can use minimal,it is optional. Export configuration

SVG sample attribution

SVGs in /assets/w3samples pulled from W3 sample files

SVGs in /assets/deborah_ufw provided by @deborah-ufw

SVGs in /assets/simple are pulled from trivial examples or generated to test basic functionality - some of them come directly from the SVG 1.1 spec. Some have also come or been adapted from issues raised in this repository.

SVGs in /assets/wikimedia are pulled from Wikimedia Commons

Android Drawables in /assets/android_vd are pulled from Android Documentation and examples.

The Flutter Logo created based on the Flutter Logo Widget © Google.

The Dart logo is from dartlang.org © Google

SVGs in /assets/noto-emoji are from Google i18n noto-emoji, licensed under the Apache license.

Please submit SVGs this can't render properly (e.g. that don't render here the way they do in chrome), as long as they're not using anything "probably out of scope" (above).

Alternatives

Issues
  • Support for Web

    Support for Web

    Hi

    I'm using flutter_svg in my apps, but I need to use in a simple web page that will be created with Flutter Web.

    Does flutter_svg supports Flutter for Web or it will support soon? This is in your plans?

    opened by emersonsiega 82
  • Error: Type 'DiagnosticableMixin' not found

    Error: Type 'DiagnosticableMixin' not found

    Pub/Cache/hosted/pub.dartlang.org/flutter_svg-0.17.4/lib/src/picture_stream.dart:88:26: Error: Type 'DiagnosticableMixin' not found. class PictureStream with DiagnosticableMixin { ^^^^^^^^^^^^^^^^^^^ Pub/Cache/hosted/pub.dartlang.org/flutter_svg-0.17.4/lib/src/picture_stream.dart:192:44: Error: Type 'DiagnosticableMixin' not found. abstract class PictureStreamCompleter with DiagnosticableMixin { ^^^^^^^^^^^^^^^^^^^ Pub/Cache/hosted/pub.dartlang.org/flutter_svg-0.17.4/lib/src/picture_stream.dart:88:7: Error: The type 'DiagnosticableMixin' can't be mixed in. class PictureStream with DiagnosticableMixin { ^ Pub/Cache/hosted/pub.dartlang.org/flutter_svg-0.17.4/lib/src/picture_stream.dart:192:16: Error: The type 'DiagnosticableMixin' can't be mixed in. abstract class PictureStreamCompleter with DiagnosticableMixin { ^ Pub/Cache/hosted/pub.dartlang.org/flutter_svg-0.17.4/lib/src/picture_stream.dart:167:11: Error: Superclass has no method named 'debugFillProperties'. super.debugFillProperties(properties); ^^^^^^^^^^^^^^^^^^^ Pub/Cache/hosted/pub.dartlang.org/flutter_svg-0.17.4/lib/src/picture_stream.dart:171:30: Error: The method 'toStringShort' isn't defined for the class 'PictureStreamCompleter'.

    • 'PictureStreamCompleter' is from 'package:flutter_svg/src/picture_stream.dart' ('Pub/Cache/hosted/pub.dartlang.org/flutter_svg-0.17.4/lib/src/picture_stream.dart'). Try correcting the name to the name of an existing method, or defining a method named 'toStringShort'. ifPresent: _completer?.toStringShort(), ^^^^^^^^^^^^^ Pub/Cache/hosted/pub.dartlang.org/flutter_svg-0.17.4/lib/src/picture_stream.dart:266:11: Error: Superclass has no method named 'debugFillProperties'. super.debugFillProperties(description); ^^^^^^^^^^^^^^^^^^^ Why do not you leave at least one past version working, because when you try to downgrade a similar error occurs? What is the problem? Yes I know your answer “that upgrade to version 0.18.0 and it will work”, but even this is not possible now. Make at least one assembly that will work for any of your changes, I beg.
    opened by VolodymyrZhuravlovRacoon 37
  • No named parameter with the name 'nullOk'.

    No named parameter with the name 'nullOk'.

    ../../../../.pub-cache/hosted/pub.flutter-io.cn/flutter_svg-0.19.2+1/lib/src/picture_provider.dart:57:59: Error: No named parameter with the name 'nullOk'. context != null ? Localizations.localeOf(context, nullOk: true) : null,

    [✓] Flutter (Channel master, 1.26.0-13.0.pre.163, on Mac OS X 10.15.7 19H114 darwin-x64, locale zh-Hans-CN) • Flutter version 1.26.0-13.0.pre.163 at /Users/m6/Downloads/tools/flutter_sdk/flutter • Framework revision b4f69eb7eb (3 hours ago), 2021-01-25 19:17:29 -0500 • Engine revision ee07d1b448 • Dart version 2.12.0 (build 2.12.0-256.0.dev) • Pub download mirror https://pub.flutter-io.cn • Flutter download mirror https://storage.flutter-io.cn

    opened by xiaocode337317439 36
  • Support applying colors from IconTheme

    Support applying colors from IconTheme

    Similar to Android feature related to vector drawables, where the developer can change the color of the asset at runtime through android:tint or by applying a style or theme.

    In Android the color is applied over areas with color #000000.

    This is a common procedure in Android to allow the use of only 1 asset and provide branding through different screens, or change color according to state computed dynamically (e.g. a wifi or toggle icon could have a grey color when disabled and brand color when active).

    enhancement 
    opened by fmatosqg 33
  • Exception caught by SVG: tried to call a non-function, such as null: 'this.function._equals'

    Exception caught by SVG: tried to call a non-function, such as null: 'this.function._equals'

    ════════ Exception caught by SVG ═══════════════════════════════════════════════
    The following JSNoSuchMethodError was thrown resolving a single-frame picture stream:
    NoSuchMethodError: tried to call a non-function, such as null: 'this.function._equals'
    
    packages/petitparser/src/definition/reference.dart 19:11                          _equals
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 687:60  equals
    dart-sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart 147:17         _get
    packages/petitparser/src/definition/grammar.dart 138:27                           _dereference
    packages/petitparser/src/definition/grammar.dart 163:30                           [_resolve]
    ...
    Picture provider: ExactAssetPicture(name: "res/icons/plus.svg", bundle: null, colorFilter: null)
    Picture key: AssetBundlePictureKey(bundle: PlatformAssetBundle#526cb(), name: "res/icons/plus.svg", colorFilter: null)
    
    ════════ Exception caught by SVG ═══════════════════════════════════════════════
    NoSuchMethodError: tried to call a non-function, such as null: 'this.function._equals'
    ════════════════════════════════════════════════════════════════════════════════
    
    ════════ Exception caught by SVG ═══════════════════════════════════════════════
    NoSuchMethodError: tried to call a non-function, such as null: 'this.function._equals'
    ════════════════════════════════════════════════════════════════════════════════
    

    everything was working just a 2 days ago , after i updated flutter and pubspec.yaml , all svgs' in my app are not working they show nothing,

    opened by phaylali 19
  • [WEB] Add support to Html renderer

    [WEB] Add support to Html renderer

    I know that @dnfield was looking to a solution to this, I think that it would be nice if we receive some feedback of the status of that as we can't work with canvaskit renderer in a production environment and we need to use SVGs images(I really don't want to migrate all the images to sprites, as it is the only solution I see to this).

    opened by franarolas 18
  • SVGs loaded from asset bundles aren't cached

    SVGs loaded from asset bundles aren't cached

    I'm seeing that SVGs loaded as assets don't get cached at all, because key.bundle.load(key.name) doesn't cache, whereas key.bundle.loadString(key.name) does.

    If I'm using SVGs to render icons, this means that the asset is loaded repeatedly as the app is used.

    Would it make sense to use loadString instead?

    opened by SteveAlexander 16
  • Custom color is not set in tests

    Custom color is not set in tests

    I have created a custom widget that can be used for an svg icon. Everything works perfectly when using it in a flutter app. But when using it in tests a custom color is not shown in the golden files.

    import 'package:flutter/material.dart';
    import 'package:flutter_svg/flutter_svg.dart';
    
    class SvgIcon extends StatelessWidget {
      final String svgAsset;
      final Color color;
      final double size;
    
      const SvgIcon({
        @required this.svgAsset,
        this.color = Colors.black,
        this.size,
      });
    
      @override
      Widget build(BuildContext context) {
        return SvgPicture.asset(
          svgAsset,
          height: size,
          width: size,
          color: color,
        );
      }
    }
    

    My tests:

    import 'package:flutter/material.dart';
    import 'package:flutter_test/flutter_test.dart';
    
    import '../di/test_kiwi_util.dart';
    import '../util/test_util.dart';
    
    void main() {
      testWidgets('SvgIcon initial state', (tester) async {
        const sut = SvgIcon(svgAsset: 'assets/images/icons/android/map.svg');
    
    
        final testWidget = TestWrapper(child: sut);
        tester.allWidgets.toList().clear();
        await tester.pumpWidget(testWidget);
        await tester.pumpAndSettle();
        await takeScreenshot(tester, 'svg_icon_initial_state');
      });
    
      testWidgets('SvgIcon custom color', (tester) async {
        const sut = SvgIcon(
          svgAsset: 'assets/images/icons/android/map.svg',
          color: Colors.purple,
        );
    
        final testWidget = TestWrapper(child: sut);
        tester.allWidgets.toList().clear();
        await tester.pumpWidget(testWidget);
        await tester.pumpAndSettle();
        await takeScreenshot(tester, 'svg_icon_custom_color');
      });
    
      testWidgets('SvgIcon custom size', (tester) async {
        const sut = SvgIcon(
          svgAsset: 'assets/images/icons/android/map.svg',
          size: ThemeDimens.padding64,
        );
    
        final testWidget = TestWrapper(child: sut);
        tester.allWidgets.toList().clear();
        await tester.pumpWidget(testWidget);
        await tester.pumpAndSettle();
        await takeScreenshot(tester, 'svg_icon_custom_size');
      });
    
      testWidgets('SvgIcon custom size and color', (tester) async {
        const sut = SvgIcon(
          svgAsset: 'assets/images/icons/android/map.svg',
          color: Colors.purple,
          size: ThemeDimens.padding64,
        );
    
        final testWidget = TestWrapper(child: sut);
        tester.allWidgets.toList().clear();
        await tester.pumpWidget(testWidget);
        await tester.pumpAndSettle();
        await takeScreenshot(tester, 'svg_icon_custom_size_and_color');
      });
    }
    
    Future<void> takeScreenshot(WidgetTester tester, String snapshotName) async {
      expect(find.byType(TestWrapper), findsOneWidget);
      await expectLater(
        find.byType(TestWrapper),
        matchesGoldenFile('img/$snapshotName.png'),
      );
    }
    
    
    class TestWrapper extends StatelessWidget {
      final Widget child;
    
      const TestWrapper({@required this.child});
    
      @override
      Widget build(BuildContext context) {
        return RepaintBoundary(
          child: child,
        );
      }
    }
    
    

    svg_icon_initial_state svg_icon_initial_state svg_icon_custom_color svg_icon_custom_color svg_icon_custom_size svg_icon_custom_size svg_icon_custom_size_and_color svg_icon_custom_size_and_color

    opened by vanlooverenkoen 15
  • DRAFT: Initial web support draft

    DRAFT: Initial web support draft

    Would fix #173

    This is more of a draft than a fully working pull request. Things I had to do:

    • change HTTP Get method to use http package that is available on web platform as well
    • import universal_io so we can still expose SvgPicture.file
    • store SVG xml string in PictureInfo so we can use it for HtmlPlatformView

    Some problems exist:

    • in order to have correct scaling on the Web you'd be required to add a width + height to the SvgPicture constructor. I don't think there's a way around it.
    • having a separate PictureInfo class for the Web would be smarter
    • code repetition in svg.dart, svg_web.dart and svg_io.dart
    • colorFilter and some other parameters are ignored on the web
    • on the web we shouldn't need to download a network image SVG first before displaying it
    opened by jonasbark 14
  • My colored SVG is rendered as black?

    My colored SVG is rendered as black?

    Hey, i have SVG images and they are colored, when i import one in my flutter app,it come in black color,while i did not set the color. what is the problem?

    opened by RegisSaffi 14
  • Could you export 'render_picture.dart'

    Could you export 'render_picture.dart'

    We customize the relative display effect, Could you export 'render_picture.dart'? render_picture.dart

    opened by huakucha 3
  • Paragraphs: Use longestLine instead of minIntrinsicWidth

    Paragraphs: Use longestLine instead of minIntrinsicWidth

    When calculating the position of a laid out paragraph according to the provided DrawableTextAnchorPosition, the paragraph's minIntrinsicWidth is used. For text containing white spaces, however, this yields to wrong results.

    Example 1

    (SVG taken from the linked issue)

    Before

    image

    After

    image

    Example 2

    Before (without space)

    image

    Before (with space)

    image

    After (without space)

    image

    After (with space)

    image

    Fixes #248

    opened by jnschulze 4
  • Type 'AssetBundle' not found

    Type 'AssetBundle' not found

    version: 0.23.0+1 problem:

    Launching lib/main.dart on Pixel 5 in debug mode... Running Gradle task 'assembleDebug'... ../../../.pub-cache/hosted/pub.flutter-io.cn/flutter_svg-0.23.0+1/lib/svg.dart:325:5: Error: Type 'AssetBundle' not found. AssetBundle? bundle, ^^^^^^^^^^^ ../../../.pub-cache/hosted/pub.flutter-io.cn/flutter_svg-0.23.0+1/lib/svg.dart:325:5: Error: 'AssetBundle' isn't a type. AssetBundle? bundle, ^^^^^^^^^^^

    please import ‘import 'package:flutter/services.dart';’ in the error dart file

    opened by huakucha 8
  • Svg as xlink href inside SVG file.

    Svg as xlink href inside SVG file.

    @dnfield this PR to support of SVG url inside image tag. Previously it support only for images like jpg png etc. for example:

    <image xlink:href="https://upload.wikimedia.org/wikipedia/commons/b/b4/Chess_ndd45.svg"/>

    opened by ashish12s3 1
  • Add support for ex units

    Add support for ex units

    Adds support for font-relative ex units.

    • Modified parseDoubleWithUnits to parse ex units along with px and em.
    • Added xHeight to SvgTheme (defaults to the font size divided by 2).
    • SvgPicture uses the provided x-height to calculate ex units in SVG elements. If no x-height is provided through the widget's property, then the value fallbacks to (consecutively) DefaultSvgTheme.xHeight or the font size divided by 2.
    • The following SVG elements/attributes support ex units at the moment:
      • svg (width, height)
      • use (x, y)
      • text (x, y)
      • radialGradient (cx, cy, r, fx, fy)
      • linearGradient (x1, y1, x2, y2)
      • image (x, y, width, height)
      • circle (cx, cy, r)
      • rect (x, y, width, height, rx, ry)
      • ellipse (cx, cy, rx, ry)
      • line (x1, y1, x2, y2)
      • stroke-dasharray
      • stroke-dashoffset
      • stroke-width
    opened by bselwe 1
  • `currentColor` opacity ignored

    `currentColor` opacity ignored

    The recently added support for currentColor in ThemeData ignores the colors opacity.

    For example this will render the icon with full opacity, despite it should be fully invisible:

    final icon = svg.fromSvgBytes(iconData, iconKey, theme: SvgTheme(currentColor: Colors.blue.withOpacity(0)));
    icon
                ..scaleCanvasToViewBox(canvas, iconSize)
                ..clipCanvasToViewBox(canvas)
                ..draw(canvas, Rect.zero);
    
    opened by FaFre 8
  • Transparent problem in SVG pictures

    Transparent problem in SVG pictures

    I have svg picture with transparent, when I used this package for showing my svg pictures, the transparent not appeared!

    The actual svg: weather_night

    Flutter svg Screenshot from 2021-11-11 10-37-57 :

    opened by MuhmdHsn313 1
  • Avoid saveLayer with colorFilter when a single path/shape is drawn

    Avoid saveLayer with colorFilter when a single path/shape is drawn

    From discussion it seems like the saveLayer call is unnecessary when the drawn content is just a single path/shape. The saveLayer call should be omitted in that case.

    Related: https://github.com/flutter/flutter/issues/92874

    Internal: b/204888249

    opened by goderbauer 3
  • Requires Flutter >=2.4.0 for LayerHandle usage

    Requires Flutter >=2.4.0 for LayerHandle usage

    The Flutter version constraint is out of date. This PR is bumping it to at least 2.4.0.

    The commit that landed LayerHandle in flutter/flutter is https://github.com/flutter/flutter/commit/025397ae3f925b316991912977367d3263cc4432.

    opened by daohoangson 1
  •  Error: 'AssetBundle' isn't a type.     AssetBundle? bundle,

    Error: 'AssetBundle' isn't a type. AssetBundle? bundle,

    ../../flutter/.pub-cache/hosted/pub.dartlang.org/flutter_svg-0.23.0+1/lib/svg.dart:325:5: Error: 'AssetBundle' isn't a type. AssetBundle? bundle,

    opened by abhilash007 7
Releases(v0.11.0)
Owner
Dan Field
Software Engineer @google for @flutter
Dan Field
A flutter carousel widget, support infinite scroll, and custom child widget.

carousel_slider A carousel slider widget. Features Infinite scroll Custom child widgets Auto play Supported platforms Flutter Android Flutter iOS Flut

serenader 1.2k Nov 27, 2021
Crop any widget/image in Android, iOS, Web and Desktop with fancy and customizable UI, in pure Dart code.

crop A Flutter package for cropping any widget, not only images. This package is entirely written in Dart and supports Android, iOS, Web and Desktop.

Mahdi 169 Nov 12, 2021
A Flutter widget that paints an image and moves it at a slower speed than the main scrolling content.

A Flutter widget that paints an image and moves it at a slower speed than the main scrolling content. Installation Add dependency to your pubspec.yaml

Anatoly Pulyaevskiy 238 Oct 27, 2021
A flutter plugin which provides Crop Widget for cropping images.

A flutter plugin which provides Crop Widget for cropping images. crop_your_image provides only minimum UI for deciding cropping area inside images. Other UI parts, such as "Crop" button or "Change Aspect Ratio" button, need to be prepared by each app developers.

Chooyan 55 Nov 8, 2021
A Flutter plugin for Android and iOS supports cropping images

Image Cropper A Flutter plugin for Android and iOS supports cropping images. This plugin is based on two different native libraries so it comes with d

HungHD 809 Nov 21, 2021
Download, cache and show images in a flutter app

Cached network image A flutter library to show images from the internet and keep them in the cache directory. How to use The CachedNetworkImage can be

Baseflow 1.9k Nov 26, 2021
Flutter plugin that allows you to display multi image picker on iOS and Android. 👌🔝🎉

IMPORTANT: This repository has been archived and no longer mantained. As I don't have time anymore to work on the package it became very outdated. For

Radoslav Vitanov 898 Apr 29, 2021
Use lottie in flutter for both iOS and Android

flutter_lottie Use Lottie in Flutter. Supports both iOS and Android using lottie-ios and lottie-android Current Status Supports most features that bot

Cameron Smith 163 Jul 2, 2021
A simple and easy flutter demo to crop image

flutter_image_crop A simple demo to crop image on flutter easily. A Chinese version of this document can be found here Flutter_image_crop Plugin will

路小飞 3 Jul 8, 2021
Multiavatar is a free and open-source multicultural avatar maker.

Flutter Wrapper for Multiavatar Multiavatar is a multicultural avatar maker. Multiavatar represents people from multiple races, multiple cultures, multiple age groups, multiple worldviews and walks of life.

Iheb Briki 54 Oct 24, 2021
Minimal Unsplash Android App to easily search and download images

Minimal Unsplash Android App to easily search and download images

Yash Garg 11 Sep 28, 2021
A Flutter package for manipulating bitmaps

Flutter Bitmap A minimalist Flutter package to perform fast bitmaps operations. The focus here is to provide a cool bitmap manipulation interface. The

Renan 126 Nov 8, 2021
Image caching system for flutter

image_cacheing image_cacheing is an image caching package. It is currently tested for Android applications. ImageCacheing widget takes url as a param.

evolving_kid 3 May 31, 2021
Rocket is a parsing framework for parsing binary data structures using efficient parsing algorithms

rocket Version 0.1.10 (BETA) Rocket is a parsing framework for parsing binary data structures using efficient parsing algorithms. Breaking change: The

null 4 Aug 18, 2021
📸 Easy to use yet very customizable zoomable image widget for Flutter, Photo View provides a gesture sensitive zoomable widget. Photo View is largely used to show interacive images and other stuff such as SVG.

Flutter Photo View A simple zoomable image/content widget for Flutter. PhotoView enables images to become able to zoom and pan with user gestures such

Fire Slime Games 1.5k Nov 29, 2021
A type-safe command-line parsing library for Dart

plade Plade is a type-safe CLI parsing library for Dart. Highlights Fully type-safe and null-safe. Support for a variety of different parsing styles (

Ryan Gonzalez 6 Jul 28, 2021
A Flutter library for gradually painting SVG path objects on canvas (drawing line animation).

drawing_animation From static SVG assets See more examples in the showcasing app. Dynamically created from Path objects which are animated over time m

null 382 Nov 29, 2021
Kraken - a high-performance, web standards-compliant rendering engine based on Flutter.

Kraken - a high-performance, web standards-compliant rendering engine based on Flutter.

OpenKraken 4k Nov 30, 2021
A Flutter server rendering framework

Shark Flutter ?? (Under Construction) A Flutter server rendering framework After i finish the project structure, I would draw a project diagram and de

Vau 48 Nov 23, 2021
Converts SVG icons to OTF font and generates Flutter-compatible class. Provides an API and a CLI tool.

Fontify The Fontify package provides an easy way to convert SVG icons to OpenType font and generate Flutter-compatible class that contains identifiers

Igor Kharakhordin 75 Oct 20, 2021
A flutter package for select a city from svg map.

City Picker From Map A flutter package for select a city from svg map. Supported countries (+150) are here. Screenshots Getting Started In the pubspec

Ahmet ÇELİK 34 Nov 8, 2021
Calendar widget for flutter that is swipeable horizontally. This widget can help you build your own calendar widget highly customizable.

flutter_calendar_carousel Calendar widget for flutter that is swipeable horizontally. This widget can help you build your own calendar widget highly c

dooboolab 682 Nov 29, 2021
Flutter Shine is a library for pretty and realistic shadows, dynamic light positions, extremely customizable shadows, no library dependencies, text or box shadows based on content.

Flutter Shine Show some ❤️ and star the repo to support the project Flutter widget inspired by Shine Installation Add the Package dependencies: flut

Jonathan Monga 137 Nov 26, 2021
A flutter carousel widget, support infinite scroll, and custom child widget.

carousel_slider A carousel slider widget. Features Infinite scroll Custom child widgets Auto play Supported platforms Flutter Android Flutter iOS Flut

serenader 1.2k Nov 27, 2021
Flutter library for iOS Widgets Extensions. Integrate a Widget into your App 🍏📱

flutter_widgetkit Flutter Library for the iOS ?? WidgetKit framework and Widget Communication Table of Contents ?? Introduction ??‍?? Installation ??‍

Fasky 161 Nov 28, 2021
A simple detailed flutter widget that looks almost the same as the real instagram mention widget.

Instagram Mention Widgets 'small details do matter' ❤️ This package provides simple and almost the same UI details that the real Instagram mention wid

AbdulMuaz Aqeel 16 Nov 15, 2021
DirectSelect is a selection widget with an ethereal, full-screen modal popup displaying the available choices when the widget is interact with. https://dribbble.com/shots/3876250-DirectSelect-Dropdown-ux

direct-select-flutter DirectSelect is a selection widget with an ethereal, full-screen modal popup displaying the available choices when the widget is

null 479 Nov 28, 2021
FileManager is a wonderful widget that allows you to manage files and folders, pick files and folders, and do a lot more. Designed to feel like part of the Flutter framework.

File Manager FileManager is a wonderful widget that allows you to manage files and folders, pick files and folders, and do a lot more. Designed to fee

Devs On Flutter 28 Nov 12, 2021
Flutter plugin for selecting images from the Android and iOS image library, taking new pictures with the camera, and edit them before using such as rotation, cropping, adding sticker/text/filters.

advance_image_picker Flutter plugin for selecting multiple images from the Android and iOS image library, taking new pictures with the camera, and edi

Weta Vietnam 64 Nov 24, 2021