SVG in Flutter Exception caught by SVG - flutter

I am using the latest library update
dependencies:
flutter_svg: ^0.17.4
Container( height: 150, //color: Colors.blue, width: screenWidth * 0.80, child: SvgPicture.asset( "assets/logo-violeta-NVIAME-login.svg", color: Color(0xFF6327f8), ), ),
------------------------------------------------------------------------
My code worked but I did Hot Restart .. and well I get the following exception
The <style> element is not implemented in this library.
Style elements are not supported by this library and the requested SVG may not render as intended.
If possible, ensure the SVG uses inline styles and/or attributes (which are supported), or use a preprocessing utility such as svgcleaner to inline the styles for you.
Picture key: AssetBundlePictureKey(bundle: PlatformAssetBundle#60537(), name: "assets/logo-violeta-NVIAME-login.svg", colorFilter: ColorFilter.mode(Color(0xff6327f8), BlendMode.srcIn))
════════════════════════════════════════════════════════════════════════════════
I/flutter (26058): unhandled element metadata; Picture key: AssetBundlePictureKey(bundle: PlatformAssetBundle#60537(), name: "assets/logo-violeta-NVIAME-login.svg", colorFilter: ColorFilter.mode(Color(0xff6327f8), BlendMode.srcIn))

It is actually the SVG image that you've used.
As mentioned in the error:
The <style> element is not implemented in this library.
Style elements are not supported by this library and the requested SVG may not render as intended.
If possible, ensure the SVG uses inline styles and/or attributes (which are supported), or use a preprocessing utility such as svgcleaner to inline the styles for you.
flutter_svg package does not support svg with internal css like:
<style>
.....
</style>
Here is an open GitHub issue that indicates it is not yet supported.
Some of the options that you can actually try:
Remove the internal css and write inline css
Use different svg picture
Use a preprocessing utility such as svgcleaner to inline the styles for you. Which is exactly the one you've found as mentioned in the comments. See also this SO post.
Use this tool https://jakearchibald.github.io/svgomg/
But the easiest way is to have your design tool not use CSS if possible.

My workaround: drag and drop the svg files to the Figma design tool and then export all of them to get the standard error-free svg files.

I faced this issue too, then I used 'SVG Cleaner' app to clean and inline SVG code.
By the end it worked properly ^_*

Related

Flutter - how add svg image?

The following UnimplementedError was thrown in parseSvgElement:
The element is not implemented in this library.
Style elements are not supported by this library and the requested SVG may not render as intended.
If possible, ensure the SVG uses inline styles and/or attributes (which are supported), or use a preprocessing utility such as svgcleaner to inline the styles for you.
2
Picture key: AssetBundlePictureKey(bundle: PlatformAssetBundle#e5679(), name: "assets/image/foodigo.svg", colorFilter: null, theme: SvgTheme(currentColor: Color(0xff000000), fontSize: 14.0, xHeight: 7.0))
Not all SVG features are supported by flutter_svg package, as stated here.
You can try to use an online tool to "clean up" your SVG file (search for "SVG clean/optimize") or you can use one of the tools suggested in the same link above (like usvg).
I would suggest usvg if you have a lot of files to process.
You can also use flutter svg provider package for that : https://pub.dev/packages/flutter_svg_provider

How to use SVG in Flutter

I'm currently in the process of integrating a map into my app, which should highlight individual components in color. I use this map (https://simplemaps.com/resources/svg-de), which is already available in a well-designed SVG file. I am now trying to color the individual SVG paths using Flutter Code. I am building on the svg_path_parser package (https://pub.dev/packages/svg_path_parser) and have used the corresponding example. But I am unable to replace the paths from the example with those from my SVG file. This may be due to the fact that my SVG paths are significantly longer than the ones given in the example.
I would be very grateful if you would give me a little help or a suggestion for a better approach.
step 1.add dependency in your pubspec.yaml
dependencies:
flutter_svg: any
step 2.import the flutter svg package in your app
import 'package:flutter_svg/flutter_svg.dart';
step 3. just use like below
SvgPicture.asset(
'assets/images/bm-icon1.svg',
width: 18.0,
height: 18.0,
),

Flutter SVG as ImageIcon

My designer has switched from PNG to SVG files, 'cause our icons are to pixelated.
How I can use a SVG as an ImageIcon?.
Previous I have used this for PNG files:
ImageIcon(AssetImage('assets/images/ic_home.png')
I'm using flutter_svg (SvgPicture.asset(item.icon, height: 24, width: 24))
Thank you in advance for your help!
You actually can't do it as mentioned here by Flutter SVG creator that PictureProvider and ImageProvider are incompatible and ImageIcon needs an ImageProvider.
However, you don't actually need to do it, and you probably won't as well. You can refactor your code to use:
SvgPicture.asset(item.icon, height: 24, width: 24)
And nothing else. That should be enough, no need for more complexity.

How Can I generate QR code and Show it on a PDF page in Flutter

I am Building a Flutter App, and one of the Functionalities includes the following:
1- Generating Qr codes - no problem here if I am showing it on the screen.
2- Generating PDF file, then saving it and sharing it using native device Sharing, No problem here until I tried to include the Qr code in the PDF page!
I have been stuck with this for two days and tried too many approaches to solve this, sadly with no luck.
please help and thank you all in advance.
You can use the Barcode widget from the pdf package. https://pub.dev/packages/pdf
import 'package:pdf/widgets.dart' as pw;
//Barcode widget inside pdf.addPage()
pw.BarcodeWidget(
color: PdfColor.fromHex("#000000"),
barcode: pw.Barcode.qrCode(),
data: "My data",
),
using this package (pdf package) you can use like this -->
final pdf = pw.Document();
pw.BarcodeWidget(
data: "demo",
barcode: pw.Barcode.qrCode(),
width: 100,
height: 50
),
result is:
I have got the following answer from DavBfr / dart_pdf on GitHub and it worked:
Yes, there is a Widget for that:
BarcodeWidget(
barcode: Barcode.qrCode(),
data: 'here is a qrcode',
)
You can use the same widget for Flutter too: https://pub.dev/packages/barcode_widget

Flutter: SVG Image in the background throws an error

I have to keep the SVG Image in the background and keep the Text in the top.
When I'm keeping the SVG Image from the Flutter_SVG Package, I got a error like this.
I/flutter (24437): Unsupported operation: Could not resolve image href: Component%206%20-%201-image.png
Picture provider: ExactAssetPicture(name: "assets/images/login_header.svg", bundle: null,
I/flutter (24437): colorFilter: ColorFilter.mode(MaterialColor(primary value: Color(0xfff44336)), BlendMode.srcIn))
I/flutter (24437): Picture key: AssetBundlePictureKey(bundle: PlatformAssetBundle#32e52(), name:
I/flutter (24437): "assets/images/xxx.svg", colorFilter: ColorFilter.mode(MaterialColor(primary value:
I/flutter (24437): Color(0xfff44336)), BlendMode.srcIn))
flutter_svg package that you use does not support filter effects.Sadly this is not possible with the current version of the package.This would be possible only.
Anyway one of the hacks (Crappy workaround)
Converting shadows to bitmap(not correct solution)
Follow the issue on Github Issues. Hoping the feature will be available soon as said by the developer of the package
Need to clear the caches from SVG Image. It can be done by SVGCleaner and that's will work in our project.
Download SVG CLEANER "Download" and clean the files, then open the .SVG in a text editor and change the following:
and add
That should be enough, I have had this problem several times and only then has it been fixed.
I was able to fix this by dragging and dropping the svg files to the Figma design tool and then export all of them to get the standard error-free svg files.
Do this flutter clean && flutter pub get