diff --git a/examples/counter_example/pubspec.lock b/examples/counter_example/pubspec.lock
index ac1a32fb..f49ef922 100644
--- a/examples/counter_example/pubspec.lock
+++ b/examples/counter_example/pubspec.lock
@@ -286,6 +286,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "5.0.0"
+ flutter_svg:
+ dependency: transitive
+ description:
+ name: flutter_svg
+ sha256: d44bf546b13025ec7353091516f6881f1d4c633993cb109c3916c3a0159dadf1
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.0"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -499,6 +507,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.1"
+ path_parsing:
+ dependency: transitive
+ description:
+ name: path_parsing
+ sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
path_provider:
dependency: transitive
description:
@@ -547,6 +563,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.3.0"
+ petitparser:
+ dependency: transitive
+ description:
+ name: petitparser
+ sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.1.0"
platform:
dependency: transitive
description:
@@ -790,6 +814,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.5.1"
+ vector_graphics:
+ dependency: transitive
+ description:
+ name: vector_graphics
+ sha256: "44cc7104ff32563122a929e4620cf3efd584194eec6d1d913eb5ba593dbcf6de"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.18"
+ vector_graphics_codec:
+ dependency: transitive
+ description:
+ name: vector_graphics_codec
+ sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.13"
+ vector_graphics_compiler:
+ dependency: transitive
+ description:
+ name: vector_graphics_compiler
+ sha256: "557a315b7d2a6dbb0aaaff84d857967ce6bdc96a63dc6ee2a57ce5a6ee5d3331"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.17"
vector_math:
dependency: transitive
description:
@@ -846,6 +894,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.0"
+ xml:
+ dependency: transitive
+ description:
+ name: xml
+ sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.5.0"
yaml:
dependency: transitive
description:
diff --git a/examples/movie_app/pubspec.lock b/examples/movie_app/pubspec.lock
index cf5869f5..d516b37f 100644
--- a/examples/movie_app/pubspec.lock
+++ b/examples/movie_app/pubspec.lock
@@ -1,6 +1,14 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
+ args:
+ dependency: transitive
+ description:
+ name: args
+ sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.7.0"
async:
dependency: transitive
description:
@@ -150,6 +158,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "5.0.0"
+ flutter_svg:
+ dependency: transitive
+ description:
+ name: flutter_svg
+ sha256: d44bf546b13025ec7353091516f6881f1d4c633993cb109c3916c3a0159dadf1
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.0"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -267,6 +283,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.1"
+ path_parsing:
+ dependency: transitive
+ description:
+ name: path_parsing
+ sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
path_provider:
dependency: transitive
description:
@@ -315,6 +339,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.3.0"
+ petitparser:
+ dependency: transitive
+ description:
+ name: petitparser
+ sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.1.0"
platform:
dependency: transitive
description:
@@ -486,6 +518,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.5.1"
+ vector_graphics:
+ dependency: transitive
+ description:
+ name: vector_graphics
+ sha256: "44cc7104ff32563122a929e4620cf3efd584194eec6d1d913eb5ba593dbcf6de"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.18"
+ vector_graphics_codec:
+ dependency: transitive
+ description:
+ name: vector_graphics_codec
+ sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.13"
+ vector_graphics_compiler:
+ dependency: transitive
+ description:
+ name: vector_graphics_compiler
+ sha256: "557a315b7d2a6dbb0aaaff84d857967ce6bdc96a63dc6ee2a57ce5a6ee5d3331"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.17"
vector_math:
dependency: transitive
description:
@@ -518,6 +574,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.0"
+ xml:
+ dependency: transitive
+ description:
+ name: xml
+ sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.5.0"
sdks:
dart: ">=3.7.2 <4.0.0"
flutter: ">=3.27.0"
diff --git a/examples/stac_gallery/assets/images/gallery.svg b/examples/stac_gallery/assets/images/gallery.svg
new file mode 100644
index 00000000..d1e9c59b
--- /dev/null
+++ b/examples/stac_gallery/assets/images/gallery.svg
@@ -0,0 +1,19 @@
+
+
+
\ No newline at end of file
diff --git a/examples/stac_gallery/assets/json/image_example.json b/examples/stac_gallery/assets/json/image_example.json
index a8ef0ba9..686bcd4f 100644
--- a/examples/stac_gallery/assets/json/image_example.json
+++ b/examples/stac_gallery/assets/json/image_example.json
@@ -104,6 +104,39 @@
"fit": "fill"
}
]
+ },
+ {
+ "type": "sizedBox",
+ "height": 24
+ },
+ {
+ "type": "row",
+ "mainAxisAlignment": "center",
+ "crossAxisAlignment": "center",
+ "children": [
+ {
+ "type": "image",
+ "src": "https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/android.svg",
+ "height": 100,
+ "width": 100
+ },
+ {
+ "type": "sizedBox",
+ "width": 20
+ },
+ {
+ "type": "image",
+ "imageType": "asset",
+ "src": "assets/images/gallery.svg",
+ "color": "primary",
+ "height": 100,
+ "width": 100
+ }
+ ]
+ },
+ {
+ "type": "sizedBox",
+ "height": 24
}
]
}
diff --git a/examples/stac_gallery/pubspec.lock b/examples/stac_gallery/pubspec.lock
index aedc4d8a..4770afeb 100644
--- a/examples/stac_gallery/pubspec.lock
+++ b/examples/stac_gallery/pubspec.lock
@@ -286,6 +286,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "5.0.0"
+ flutter_svg:
+ dependency: transitive
+ description:
+ name: flutter_svg
+ sha256: d44bf546b13025ec7353091516f6881f1d4c633993cb109c3916c3a0159dadf1
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.0"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -499,6 +507,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.1"
+ path_parsing:
+ dependency: transitive
+ description:
+ name: path_parsing
+ sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
path_provider:
dependency: transitive
description:
@@ -547,6 +563,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.3.0"
+ petitparser:
+ dependency: transitive
+ description:
+ name: petitparser
+ sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.1.0"
platform:
dependency: transitive
description:
@@ -797,6 +821,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.5.1"
+ vector_graphics:
+ dependency: transitive
+ description:
+ name: vector_graphics
+ sha256: "44cc7104ff32563122a929e4620cf3efd584194eec6d1d913eb5ba593dbcf6de"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.18"
+ vector_graphics_codec:
+ dependency: transitive
+ description:
+ name: vector_graphics_codec
+ sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.13"
+ vector_graphics_compiler:
+ dependency: transitive
+ description:
+ name: vector_graphics_compiler
+ sha256: "557a315b7d2a6dbb0aaaff84d857967ce6bdc96a63dc6ee2a57ce5a6ee5d3331"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.17"
vector_math:
dependency: transitive
description:
@@ -885,6 +933,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.0"
+ xml:
+ dependency: transitive
+ description:
+ name: xml
+ sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.5.0"
yaml:
dependency: transitive
description:
diff --git a/packages/stac/lib/src/parsers/widgets/stac_image/stac_image_parser.dart b/packages/stac/lib/src/parsers/widgets/stac_image/stac_image_parser.dart
index dbc2ab4a..5acdb244 100644
--- a/packages/stac/lib/src/parsers/widgets/stac_image/stac_image_parser.dart
+++ b/packages/stac/lib/src/parsers/widgets/stac_image/stac_image_parser.dart
@@ -2,6 +2,7 @@ import 'dart:io';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/cupertino.dart';
+import 'package:flutter_svg/flutter_svg.dart';
import 'package:stac/src/parsers/widgets/stac_double/stac_double.dart';
import 'package:stac/src/utils/color_utils.dart';
import 'package:stac/src/utils/widget_type.dart';
@@ -30,8 +31,9 @@ class StacImageParser extends StacParser {
}
}
- Widget _networkImage(StacImage model, BuildContext context) =>
- CachedNetworkImage(
+ Widget _networkImage(StacImage model, BuildContext context) {
+ if (!model.src.contains(".svg")) {
+ return CachedNetworkImage(
imageUrl: model.src,
alignment: model.alignment.value,
color: model.color?.toColor(context),
@@ -42,8 +44,26 @@ class StacImageParser extends StacParser {
return const SizedBox();
},
);
+ } else {
+ return SvgPicture.network(
+ model.src,
+ alignment: model.alignment.value,
+ colorFilter: model.color != null
+ ? ColorFilter.mode(model.color.toColor(context)!, BlendMode.srcIn)
+ : null,
+ width: model.width?.parse,
+ height: model.height?.parse,
+ fit: model.fit ?? BoxFit.contain,
+ errorBuilder: (context, error, stackTrace) {
+ return const SizedBox();
+ },
+ );
+ }
+ }
- Widget _fileImage(StacImage model, BuildContext context) => Image.file(
+ Widget _fileImage(StacImage model, BuildContext context) {
+ if (!model.src.contains(".svg")) {
+ return Image.file(
File(model.src),
alignment: model.alignment.value,
color: model.color?.toColor(context),
@@ -54,8 +74,26 @@ class StacImageParser extends StacParser {
return const SizedBox();
},
);
+ } else {
+ return SvgPicture.file(
+ File(model.src),
+ alignment: model.alignment.value,
+ colorFilter: model.color != null
+ ? ColorFilter.mode(model.color.toColor(context)!, BlendMode.srcIn)
+ : null,
+ width: model.width?.parse,
+ height: model.height?.parse,
+ fit: model.fit ?? BoxFit.contain,
+ errorBuilder: (context, error, stackTrace) {
+ return const SizedBox();
+ },
+ );
+ }
+ }
- Widget _assetImage(StacImage model, BuildContext context) => Image.asset(
+ Widget _assetImage(StacImage model, BuildContext context) {
+ if (!model.src.endsWith(".svg")) {
+ return Image.asset(
model.src,
alignment: model.alignment.value,
color: model.color?.toColor(context),
@@ -66,4 +104,20 @@ class StacImageParser extends StacParser {
return const SizedBox();
},
);
+ } else {
+ return SvgPicture.asset(
+ model.src,
+ alignment: model.alignment.value,
+ colorFilter: model.color != null
+ ? ColorFilter.mode(model.color.toColor(context)!, BlendMode.srcIn)
+ : null,
+ width: model.width?.parse,
+ height: model.height?.parse,
+ fit: model.fit ?? BoxFit.contain,
+ errorBuilder: (context, error, stackTrace) {
+ return const SizedBox();
+ },
+ );
+ }
+ }
}
diff --git a/packages/stac/pubspec.yaml b/packages/stac/pubspec.yaml
index 777fc72c..bee544e0 100644
--- a/packages/stac/pubspec.yaml
+++ b/packages/stac/pubspec.yaml
@@ -22,6 +22,7 @@ dependencies:
dio: ^5.8.0+1
stac_framework: ^0.3.0
cached_network_image: ^3.4.1
+ flutter_svg: ^2.1.0
dev_dependencies:
flutter_test: