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

Comments
  • 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
  • Out of order defs/references

    Out of order defs/references

    Right now, an error is reported if you try to use a file that does something like the following:

    <svg>
      <path fill="url(#MyGradient)" d="..." />
      <linearGradient id="MyGradient" ...>
        ...
      </linearGradient>
    </svg>
    

    This is done to make sure we don't have to maintain a full DOM or traverse the XML more than once.

    However, it should be possible to keep an in memory structure of defs (probably a Map of some sort) we expect to see but haven't seen yet, and go back and back-fill them (and then remove them from the structure after we found the def they're looking for) with only a little bit of memory overhead.

    See also #68 and #97

    opened by dnfield 30
  • Support the <pattern> element

    Support the element

    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="273" width="298"> <defs> <image id="1a54d514-63f6-47f8-a0f4-ed80dsdddsf04a"

    Are this type of images supported ? And if how to use them?

    opened by rahuldange09 20
  • 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
  • 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 15
  • Add frame builder, add possibility to smoothly change placeholder to RawPicture

    Add frame builder, add possibility to smoothly change placeholder to RawPicture

    This changes are very helpful in creating a better UX. It is about this issue.

    Usage example:

              frameBuilder: (_, Widget child, PictureInfo? pictureInfo) {
                return AnimatedSwitcher(
                  duration: const Duration(microseconds: 300),
                  child: pictureInfo != null
                      ? child
                      : somePlaceholderWidget,
                );
              },
    
    opened by stepushchik-denis-gismart 0
  • SVG not rendering remotelly but works locally

    SVG not rendering remotelly but works locally

    Can't get the attached svg to render Untitled-1

    I did what was requested as per the reccomendations setting svg attritubutes to required values. I don't know if related or not but when I try to upload the icon to fluttericon.com I always get an error saying

    If image looks not as expected please convert to [compound path](https://github.com/fontello/fontello/wiki/How-to-use-custom-images#importing-svg-images) manually.
    
    Skipped tags and attributes: fill
    

    Thanks

    opened by ranvirsahota 1
  • SVGs are not rendering correctly

    SVGs are not rendering correctly

    I'm using flutter_svg on the latest version (1.1.6) as of writing.

    I've been able to render SVGs with this library in the past, but I tried adding SVGs recently and I wasn't able to get it rendering.

    I have it added in pubspec.yaml

     assets:
        - assets/svg/discover_more/
    

    and it's generated using flutter pub run build_runner build.

    when I try to render it, I see that it's returning the correct string, like "assets/svg/discover_more/discover_more_articles.svg"

    However it just renders a white box:

    [enter image description here]1

    and I'm using it like this:

    SvgPicture.asset(image) // image = assets/svg/discover_more/discover_more_articles.svg
    

    I've tried a combination of BoxFits and widths as well and it doesn't show anything besides that.

    I remember reading somewhere in the library's repo that it doesn't handle SVGs with <image> tags in them.

    For reference, my new SVGs look something like this with a base64 image:

    <svg width="1410" height="1069" viewBox="0 0 1410 1069" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <rect x="0.196289" y="0.604492" width="1408.96" height="1067.84" fill="url(#pattern0)"/>
    <defs>
    <pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
    <use xlink:href="#image0_1181_25" transform="scale(0.00190857 0.00251825)"/>
    </pattern>
    <image id="image0_1181_25" width="541" height="404" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAh0AAAGUCAYAAACRN5BqAAAMP2lDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnltSIbQAAlJCb4KIlABSQmihdwRRCUmAUEIMBBV7WVRw7aICNnRVRLHT7IidRbFhXyyoKOtiwa68SQFd95XvzffNnf/+c+Y/Z86dufcOAOonuGJxLqoBQJ6oUBIb7M8Ym5zCID0BZKABUGAArLm8AjErOjocwDLY/r28uwEQWXvVQab1z/7/WjT5ggIeAEg0xOn8Al4exAcBwKt4YkkhAEQZbz65UCzDsAJtCQwQ4oUynKnAVTKcrsB75TbxsWyIWwEgq3K5kkwA1C5DnlHEy4Qaan0QO4n4QhEA6gyIffLy8vkQp0FsA23EEMv0mek/6GT+TTN9SJPLzRzCirnICzlAWCDO5U79P9Pxv0ternTQhxWsqlmSkFjZnGHebubkh8mwKsS9ovTIKIi1IP4g5MvtIUapWdKQBIU9asgrYMOcAV2InfjcgDCIDSEOEuVGhiv59AxhEAdiuELQKcJCTjzEehAvFBQExiltNknyY5W+0PoMCZul5M9x...."/>
    </defs>
    </svg>
    
    opened by davidgtu 0
  • SVG from string not rendering image from url

    SVG from string not rendering image from url

    I have these markers in google maps

    [googel maps markers]1

    I am generating them from an svg with an <image> that has a network image.

    The problem is, the markers image that should be inside is not being displayed.

    Here's the code that I use to generate the marker:

    import 'package:flutter/material.dart';
    import 'package:flutter_svg/svg.dart';
    import 'package:google_maps_flutter/google_maps_flutter.dart' show BitmapDescriptor;
    import 'dart:ui' as ui;
    
    Future<BitmapDescriptor> getAssetImageMarker(String networkImage) async {
      Size size = const Size(30, 30);
      String svgString = '''
        <svg width="100" height="100" >
          <defs>
            <pattern id="image-pattern" x="0" y="0" width="100" height="100" patternUnits="userSpaceOnUse" >
              <image href="https://images.unsplash.com/photo-1608848461950-0fe51dfc41cb" x="0" y="0" width="100" height="120" />
            </pattern>
          </defs>
          <circle cx="50" cy="50" r="40" stroke="orange" stroke-width="4" fill="url(#image-pattern)" />
        </svg>
    ''';
    
      final svgDrawableRoot = await svg.fromSvgString(svgString, 'debug: ${svgString.codeUnits}');
    
      final ratio = ui.window.devicePixelRatio.ceil();
      final width = size.width.ceil() * ratio;
      final height = size.height.ceil() * ratio;
      final picture = svgDrawableRoot.toPicture(
        size: Size(
          width.toDouble(),
          height.toDouble(),
        ),
      );
      final image = await picture.toImage(width, height);
      final byteData = await image.toByteData(format: ui.ImageByteFormat.png);
      final uInt8List = byteData!.buffer.asUint8List();
      return BitmapDescriptor.fromBytes(uInt8List);
    }
    
    

    I don't know what the cause could be. Is this supported in svgFromString?

    opened by JoakoV3 0
  • <text> element is not rendering.

    element is not rendering.

    Hi, I am loading an SVG that contains a TEXT element which is not rendering, other than that all the paths are rendered properly. Below is the actual image ... AC Motor

    imageIn the above image, "M" will not get shown but the shape is there.

    Below is the SVG created by the steps mentioned on the page for Adobe Illustrator still, no luck "M" gets vanished completely.

    ac_motor2

    Please let me know what can be done. Below is the output I am getting by doing both above mentioned. image

    opened by aadi-github 1
Releases(v1.0.2)
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.4k Dec 30, 2022
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 225 Jan 6, 2023
A powerful official extension library of image, which support placeholder(loading)/ failed state, cache network, zoom pan image, photo view, slide out page, editor(crop,rotate,flip), paint custom etc.

extended_image Language: English| 中文简体 A powerful official extension library of image, which support placeholder(loading)/ failed state, cache network

FlutterCandies 1.6k Dec 31, 2022
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 272 Dec 23, 2022
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 96 Dec 31, 2022
Flutter package for Image Carousel It is an image carousel widget.

Snapshot Carousel Flutter package for Image Carousel It is an image carousel widget. Supported platforms Flutter Android Flutter iOS Flutter web Flutt

Mrigank Anand 12 Jun 3, 2021
A flutter package to convert any widget to an Image.

Davinci A package to convert any widget to an image which can be saved locally or can be shared to other apps and chats. ?? Preview ℹ️ Usage Prerequis

Sai Gokula Krishnan 37 Dec 20, 2022
Build a fancy looking avatar widget with a colorfull ring around the image

Build a fancy looking avatar widget with a colorfull ring around the image

Paweł Wacławiak 0 Feb 19, 2022
Simple and effective cross platform image saver for flutter, supported web and desktop

Simple and effective cross platform image saver for flutter, supported web and desktop

7c00 3 Oct 5, 2022
Loading indicator GIFs. Material and Cupertino (Android and iOS) loading indicators in assorted sizes. Use as placeholders for loading remote image assets. Demo: https://gallery.codelessly.com/flutterwebsites/loadinggifs/

Loading GIFs High quality Android and iOS loading spinners. View Demo Loading GIFs is a collection of high fidelity loading animations in GIF format.

Codelessly 31 Dec 23, 2022
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 891 Dec 28, 2022
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 2.1k Jan 3, 2023
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 160 Nov 25, 2022
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
A Flutter image editor with support for paint, text, filters, emojis, stickers and more

Flutter Image Editor Plugin with simple, easy support for image editing using Paints, Text, Filters, Emoji and Sticker like stories.

null 44 Dec 22, 2022
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 69 Dec 19, 2022
Minimal Unsplash Android App to easily search and download images

Minimal Unsplash Android App to easily search and download images

Yash Garg 18 Dec 7, 2022
Instagram tool to download images, reels, videos and more.

Instagram tool to download images, reels, videos and more.

Yuji 34 Jan 2, 2023