@@ -20,85 +20,67 @@ mixin SvgFactory on WidgetFactory {
2020 Widget ? buildImageWidget (BuildMetadata meta, ImageSource src) {
2121 final url = src.url;
2222
23- PictureProvider ? provider ;
23+ BytesLoader ? bytesLoader ;
2424 if (url.startsWith ('data:image/svg+xml' )) {
25- provider = imageSvgFromDataUri (url);
25+ bytesLoader = imageSvgFromDataUri (url);
2626 } else if (Uri .tryParse (url)? .path.toLowerCase ().endsWith ('.svg' ) == true ) {
2727 if (url.startsWith ('asset:' )) {
28- provider = imageSvgFromAsset (url);
28+ bytesLoader = imageSvgFromAsset (url);
2929 } else if (url.startsWith ('file:' )) {
30- provider = imageSvgFromFileUri (url);
30+ bytesLoader = imageSvgFromFileUri (url);
3131 } else {
32- provider = imageSvgFromNetwork (url);
32+ bytesLoader = imageSvgFromNetwork (url);
3333 }
3434 }
3535
36- if (provider == null ) {
36+ if (bytesLoader == null ) {
3737 return super .buildImageWidget (meta, src);
3838 }
3939
40- return _buildSvgPicture (meta, src, provider );
40+ return _buildSvgPicture (meta, src, bytesLoader );
4141 }
4242
43- /// Returns an [ExactAssetPicture ] .
44- PictureProvider ? imageSvgFromAsset (String url) {
43+ /// Returns an [SvgAssetLoader ] .
44+ BytesLoader ? imageSvgFromAsset (String url) {
4545 final uri = Uri .parse (url);
4646 final assetName = uri.path;
4747 if (assetName.isEmpty) {
4848 return null ;
4949 }
5050
51- return ExactAssetPicture (
52- svgAllowDrawingOutsideViewBox
53- ? SvgPicture .svgStringDecoderOutsideViewBoxBuilder
54- : SvgPicture .svgStringDecoderBuilder,
51+ return SvgAssetLoader (
5552 assetName,
56- package : uri.queryParameters['package' ],
53+ packageName : uri.queryParameters['package' ],
5754 );
5855 }
5956
60- /// Returns a [MemoryPicture ] .
61- PictureProvider ? imageSvgFromDataUri (String dataUri) {
57+ /// Returns a [SvgBytesLoader ] .
58+ BytesLoader ? imageSvgFromDataUri (String dataUri) {
6259 final bytes = bytesFromDataUri (dataUri);
6360 if (bytes == null ) {
6461 return null ;
6562 }
6663
67- return MemoryPicture (
68- svgAllowDrawingOutsideViewBox
69- ? SvgPicture .svgByteDecoderOutsideViewBoxBuilder
70- : SvgPicture .svgByteDecoderBuilder,
71- bytes,
72- );
64+ return SvgBytesLoader (bytes);
7365 }
7466
75- /// Returns a [FilePicture ] .
76- PictureProvider ? imageSvgFromFileUri (String url) {
67+ /// Returns a [SvgFileLoader ] .
68+ BytesLoader ? imageSvgFromFileUri (String url) {
7769 final filePath = Uri .parse (url).toFilePath ();
7870 if (filePath.isEmpty) {
7971 return null ;
8072 }
8173
82- return filePicture (
83- svgAllowDrawingOutsideViewBox
84- ? SvgPicture .svgByteDecoderOutsideViewBoxBuilder
85- : SvgPicture .svgByteDecoderBuilder,
86- filePath,
87- );
74+ return fileLoader (filePath);
8875 }
8976
90- /// Returns a [NetworkPicture ] .
91- PictureProvider ? imageSvgFromNetwork (String url) {
77+ /// Returns a [SvgNetworkLoader ] .
78+ BytesLoader ? imageSvgFromNetwork (String url) {
9279 if (url.isEmpty) {
9380 return null ;
9481 }
9582
96- return NetworkPicture (
97- svgAllowDrawingOutsideViewBox
98- ? SvgPicture .svgByteDecoderOutsideViewBoxBuilder
99- : SvgPicture .svgByteDecoderBuilder,
100- url,
101- );
83+ return SvgNetworkLoader (url);
10284 }
10385
10486 @override
@@ -107,13 +89,8 @@ mixin SvgFactory on WidgetFactory {
10789 case 'svg' :
10890 _tagSvg ?? = BuildOp (
10991 onWidgets: (meta, widgets) {
110- final provider = StringPicture (
111- svgAllowDrawingOutsideViewBox
112- ? SvgPicture .svgStringDecoderOutsideViewBoxBuilder
113- : SvgPicture .svgStringDecoderBuilder,
114- meta.element.outerHtml,
115- );
116- return [_buildSvgPicture (meta, const ImageSource ('' ), provider)];
92+ final bytesLoader = SvgStringLoader (meta.element.outerHtml);
93+ return [_buildSvgPicture (meta, const ImageSource ('' ), bytesLoader)];
11794 },
11895 );
11996 meta.register (_tagSvg! );
@@ -126,13 +103,13 @@ mixin SvgFactory on WidgetFactory {
126103 Widget _buildSvgPicture (
127104 BuildMetadata meta,
128105 ImageSource src,
129- PictureProvider provider ,
106+ BytesLoader bytesLoader ,
130107 ) {
131108 final image = src.image;
132109 final semanticLabel = image? .alt ?? image? .title;
133110
134111 return SvgPicture (
135- provider ,
112+ bytesLoader ,
136113 allowDrawingOutsideViewBox: svgAllowDrawingOutsideViewBox,
137114 excludeFromSemantics: semanticLabel == null ,
138115 fit: BoxFit .fill,
0 commit comments