From 00120c0818f8cdf7237a75c4f66de6349a687dd8 Mon Sep 17 00:00:00 2001 From: Lucio Baglione Date: Thu, 16 May 2024 10:51:30 +0200 Subject: [PATCH] feat: Add svg support for flutter_gen and add `CatalystSvgPicture` wrapper. --- .../lib/src/catalyst_svg_picture.dart | 45 +++++++++++++++++++ .../lib/src/catalyst_voices_assets.dart | 1 + .../catalyst_voices_assets/pubspec.yaml | 5 ++- 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 catalyst_voices/packages/catalyst_voices_assets/lib/src/catalyst_svg_picture.dart diff --git a/catalyst_voices/packages/catalyst_voices_assets/lib/src/catalyst_svg_picture.dart b/catalyst_voices/packages/catalyst_voices_assets/lib/src/catalyst_svg_picture.dart new file mode 100644 index 0000000000..e13aedadd1 --- /dev/null +++ b/catalyst_voices/packages/catalyst_voices_assets/lib/src/catalyst_svg_picture.dart @@ -0,0 +1,45 @@ +import 'package:flutter/widgets.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +/// [CatalystSvgPicture] is a wrapper around [SvgPicture.asset] that sets the +/// package property to `catalyst_voices_assets` by default. +/// This allows to use the asset without having to specify the package name +/// every time. +/// For more information, see [SvgPicture.asset]. +final class CatalystSvgPicture { + static SvgPicture asset( + String name, { + AssetBundle? bundle, + String? semanticsLabel, + bool excludeFromSemantics = false, + double? width, + double? height, + BoxFit fit = BoxFit.contain, + Alignment alignment = Alignment.center, + bool matchTextDirection = false, + String package = 'catalyst_voices_assets', + bool allowDrawingOutsideViewBox = false, + Widget Function(BuildContext)? placeholderBuilder, + Clip clipBehavior = Clip.hardEdge, + SvgTheme? theme, + ColorFilter? colorFilter, + }) { + return SvgPicture.asset( + name, + bundle: bundle, + semanticsLabel: semanticsLabel, + excludeFromSemantics: excludeFromSemantics, + width: width, + height: height, + fit: fit, + alignment: alignment, + matchTextDirection: matchTextDirection, + package: package, + allowDrawingOutsideViewBox: allowDrawingOutsideViewBox, + placeholderBuilder: placeholderBuilder, + clipBehavior: clipBehavior, + theme: theme, + colorFilter: colorFilter, + ); + } +} diff --git a/catalyst_voices/packages/catalyst_voices_assets/lib/src/catalyst_voices_assets.dart b/catalyst_voices/packages/catalyst_voices_assets/lib/src/catalyst_voices_assets.dart index 8da60065f7..8530754a64 100644 --- a/catalyst_voices/packages/catalyst_voices_assets/lib/src/catalyst_voices_assets.dart +++ b/catalyst_voices/packages/catalyst_voices_assets/lib/src/catalyst_voices_assets.dart @@ -2,3 +2,4 @@ export 'package:catalyst_voices_assets/generated/assets.gen.dart'; export 'package:catalyst_voices_assets/generated/colors.gen.dart'; export 'package:catalyst_voices_assets/generated/fonts.gen.dart'; export 'package:catalyst_voices_assets/src/catalyst_image.dart'; +export 'package:catalyst_voices_assets/src/catalyst_svg_picture.dart'; diff --git a/catalyst_voices/packages/catalyst_voices_assets/pubspec.yaml b/catalyst_voices/packages/catalyst_voices_assets/pubspec.yaml index e7fa13292e..6743ad0b9d 100644 --- a/catalyst_voices/packages/catalyst_voices_assets/pubspec.yaml +++ b/catalyst_voices/packages/catalyst_voices_assets/pubspec.yaml @@ -10,6 +10,7 @@ environment: dependencies: flutter: sdk: flutter + flutter_svg: ^2.0.10+1 dev_dependencies: build_runner: ^2.3.3 @@ -43,4 +44,6 @@ flutter_gen: outputs: class_name: VoicesColors inputs: - - assets/colors/colors.xml \ No newline at end of file + - assets/colors/colors.xml + integrations: + flutter_svg: true \ No newline at end of file