diff --git a/packages/vector_graphics/CHANGELOG.md b/packages/vector_graphics/CHANGELOG.md index 1eaabceb587..3407e7dc5fc 100644 --- a/packages/vector_graphics/CHANGELOG.md +++ b/packages/vector_graphics/CHANGELOG.md @@ -1,6 +1,7 @@ -## NEXT +## 1.1.19 -* Updates minimum supported SDK version to Flutter 3.27/Dart 3.6. +* 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. ## 1.1.18 diff --git a/packages/vector_graphics/lib/src/listener.dart b/packages/vector_graphics/lib/src/listener.dart index f266de4fb4a..06a5268ed70 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]; + assert(image != null, + 'Invalid imageId: $imageId. Image not found in _images.'); + if (image == null) { + return; + } if (transform != null) { _canvas.save(); _canvas.transform(transform); diff --git a/packages/vector_graphics/pubspec.yaml b/packages/vector_graphics/pubspec.yaml index 1855cb3fd30..df4ca92b8b3 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.6.0 diff --git a/packages/vector_graphics/test/listener_test.dart b/packages/vector_graphics/test/listener_test.dart index cabf8051a11..8ae06a8af9b 100644 --- a/packages/vector_graphics/test/listener_test.dart +++ b/packages/vector_graphics/test/listener_test.dart @@ -144,6 +144,18 @@ 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 {