From bb591c3dfa94f0a1715eac1ec8ffdd1ccc8d9556 Mon Sep 17 00:00:00 2001 From: wangyongqi Date: Tue, 6 May 2025 18:03:11 +0800 Subject: [PATCH 1/7] Ensure to perform validity checks before using images, provide clear error messages, and enhance the robustness and maintainability of the code. --- packages/vector_graphics/lib/src/listener.dart | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/vector_graphics/lib/src/listener.dart b/packages/vector_graphics/lib/src/listener.dart index f266de4fb4a..78f8bb9dead 100644 --- a/packages/vector_graphics/lib/src/listener.dart +++ b/packages/vector_graphics/lib/src/listener.dart @@ -773,7 +773,12 @@ class FlutterVectorGraphicsListener extends VectorGraphicsCodecListener { @override void onDrawImage(int imageId, double x, double y, double width, double height, Float64List? transform) { - final Image image = _images[imageId]!; + final Image? image = _images[imageId]; + if (image == null) { + throw ArgumentError( + 'Invalid imageId: $imageId. Image not found in _images.'); + } + if (transform != null) { _canvas.save(); _canvas.transform(transform); From 664521644cb0268d44466f46faf68dde2f6f3146 Mon Sep 17 00:00:00 2001 From: wangyongqi Date: Wed, 7 May 2025 09:29:22 +0800 Subject: [PATCH 2/7] Enhance image handling by adding validity checks and clear error messages. - Ensure validity checks are performed before accessing images. - Provide informative error messages for better debugging. - Improve code robustness and maintainability. --- packages/vector_graphics/lib/src/listener.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/vector_graphics/lib/src/listener.dart b/packages/vector_graphics/lib/src/listener.dart index 78f8bb9dead..06a5268ed70 100644 --- a/packages/vector_graphics/lib/src/listener.dart +++ b/packages/vector_graphics/lib/src/listener.dart @@ -774,11 +774,11 @@ class FlutterVectorGraphicsListener extends VectorGraphicsCodecListener { void onDrawImage(int imageId, double x, double y, double width, double height, Float64List? transform) { final Image? image = _images[imageId]; + assert(image != null, + 'Invalid imageId: $imageId. Image not found in _images.'); if (image == null) { - throw ArgumentError( - 'Invalid imageId: $imageId. Image not found in _images.'); + return; } - if (transform != null) { _canvas.save(); _canvas.transform(transform); From 698ae0fb043a4ec0be869232f8e5700d67f349b7 Mon Sep 17 00:00:00 2001 From: wangyongqi Date: Wed, 7 May 2025 09:46:17 +0800 Subject: [PATCH 3/7] updated CHANGELOG.md --- packages/vector_graphics/CHANGELOG.md | 4 ++++ packages/vector_graphics/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/vector_graphics/CHANGELOG.md b/packages/vector_graphics/CHANGELOG.md index a839b37646d..6d928210d7a 100644 --- a/packages/vector_graphics/CHANGELOG.md +++ b/packages/vector_graphics/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.1.19 + +* Enhance image handling by adding validity checks and clear error messages for improved robustness and maintainability. + ## 1.1.18 * Allow transition between placeholder and loaded image to have an animation. diff --git a/packages/vector_graphics/pubspec.yaml b/packages/vector_graphics/pubspec.yaml index 67d3f0ed3d3..d4112b5c657 100644 --- a/packages/vector_graphics/pubspec.yaml +++ b/packages/vector_graphics/pubspec.yaml @@ -2,7 +2,7 @@ name: vector_graphics description: A vector graphics rendering package for Flutter using a binary encoding. repository: https://github.com/flutter/packages/tree/main/packages/vector_graphics issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+vector_graphics%22 -version: 1.1.18 +version: 1.1.19 environment: sdk: ^3.4.0 From e2288701398681dc05eb7d87defae8c83d2cbb14 Mon Sep 17 00:00:00 2001 From: wangyongqi Date: Wed, 7 May 2025 10:58:33 +0800 Subject: [PATCH 4/7] Added unit tests, Add test for AssertionError when using invalid imageId in onDrawImage. --- packages/vector_graphics/test/listener_test.dart | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/vector_graphics/test/listener_test.dart b/packages/vector_graphics/test/listener_test.dart index cabf8051a11..c181562c8c0 100644 --- a/packages/vector_graphics/test/listener_test.dart +++ b/packages/vector_graphics/test/listener_test.dart @@ -144,6 +144,20 @@ void main() { expect(drawParagraph1.memberName, #drawParagraph); expect((drawParagraph1.positionalArguments[1] as Offset).dx, 58); }); + + test('should assert when imageId is invalid', () async { + final TestPictureFactory factory = TestPictureFactory(); + final FlutterVectorGraphicsListener listener = + FlutterVectorGraphicsListener( + pictureFactory: factory, + ); + listener.onImage(0, 0, base64.decode(bluePngPixel)); + await listener.waitForImageDecode(); + expect( + () => listener.onDrawImage(2, 10, 10, 100, 100, null), + throwsAssertionError, + ); + }); } class TestPictureFactory implements PictureFactory { From cf418e242fd9f9527d50139cc8ad60389c70399c Mon Sep 17 00:00:00 2001 From: wangyongqi Date: Thu, 8 May 2025 08:53:19 +0800 Subject: [PATCH 5/7] code format optimization --- packages/vector_graphics/test/listener_test.dart | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/vector_graphics/test/listener_test.dart b/packages/vector_graphics/test/listener_test.dart index c181562c8c0..f09f0ecffc3 100644 --- a/packages/vector_graphics/test/listener_test.dart +++ b/packages/vector_graphics/test/listener_test.dart @@ -153,10 +153,8 @@ void main() { ); listener.onImage(0, 0, base64.decode(bluePngPixel)); await listener.waitForImageDecode(); - expect( - () => listener.onDrawImage(2, 10, 10, 100, 100, null), - throwsAssertionError, - ); + expect(() => listener.onDrawImage(2, 10, 10, 100, 100, null), + throwsAssertionError); }); } From 19b5da2af0620002c4bfd19a0e33c9919d2e32a3 Mon Sep 17 00:00:00 2001 From: wangyongqi Date: Thu, 8 May 2025 09:11:40 +0800 Subject: [PATCH 6/7] code format optimization --- packages/vector_graphics/test/listener_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vector_graphics/test/listener_test.dart b/packages/vector_graphics/test/listener_test.dart index f09f0ecffc3..8ae06a8af9b 100644 --- a/packages/vector_graphics/test/listener_test.dart +++ b/packages/vector_graphics/test/listener_test.dart @@ -148,7 +148,7 @@ void main() { test('should assert when imageId is invalid', () async { final TestPictureFactory factory = TestPictureFactory(); final FlutterVectorGraphicsListener listener = - FlutterVectorGraphicsListener( + FlutterVectorGraphicsListener( pictureFactory: factory, ); listener.onImage(0, 0, base64.decode(bluePngPixel)); From afe17a0478fe83be951acec5dd2b8bc041545dfa Mon Sep 17 00:00:00 2001 From: wyq Date: Sat, 24 May 2025 07:44:22 +0800 Subject: [PATCH 7/7] update version --- packages/vector_graphics/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vector_graphics/CHANGELOG.md b/packages/vector_graphics/CHANGELOG.md index 1e8512168be..3407e7dc5fc 100644 --- a/packages/vector_graphics/CHANGELOG.md +++ b/packages/vector_graphics/CHANGELOG.md @@ -1,4 +1,4 @@ -## NEXT +## 1.1.19 * Updates minimum supported SDK version to Flutter 3.24/Dart 3.5. * Enhance image handling by adding validity checks and clear error messages for improved robustness and maintainability.