From bb72909643390e7ad700b79058e1627c2edef38e Mon Sep 17 00:00:00 2001 From: Ludwig Bolling Date: Tue, 7 Jul 2026 15:13:48 +0200 Subject: [PATCH] [camera_platform_interface] Make setJpegImageQuality default a no-op --- packages/camera/camera_platform_interface/CHANGELOG.md | 4 +++- .../lib/src/platform_interface/camera_platform.dart | 9 +++++++-- packages/camera/camera_platform_interface/pubspec.yaml | 2 +- .../test/camera_platform_interface_test.dart | 4 ++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/camera/camera_platform_interface/CHANGELOG.md b/packages/camera/camera_platform_interface/CHANGELOG.md index 889501a04383..47f4146fc8a4 100644 --- a/packages/camera/camera_platform_interface/CHANGELOG.md +++ b/packages/camera/camera_platform_interface/CHANGELOG.md @@ -1,5 +1,7 @@ -## NEXT +## 2.13.1 +* Changes the default implementation of `setJpegImageQuality` to a no-op so that + platforms that do not support it ignore the setting instead of throwing. * Updates minimum supported SDK version to Flutter 3.38/Dart 3.10. ## 2.13.0 diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart index efb1576cee82..3b49571a8529 100644 --- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart +++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart @@ -337,7 +337,12 @@ abstract class CameraPlatform extends PlatformInterface { /// /// This only applies to images captured in JPEG format. /// The [quality] must be between 1 (lowest) and 100 (highest). - Future setJpegImageQuality(int cameraId, int quality) { - throw UnimplementedError('setJpegImageQuality() is not implemented.'); + /// + /// This is a best-effort setting; platforms that do not support controlling + /// the JPEG quality ignore it. The default implementation is a no-op so that + /// calling it is always safe. + Future setJpegImageQuality(int cameraId, int quality) async { + // No-op by default. Platforms that support setting the JPEG quality + // override this method. } } diff --git a/packages/camera/camera_platform_interface/pubspec.yaml b/packages/camera/camera_platform_interface/pubspec.yaml index 804bead11e33..600718419798 100644 --- a/packages/camera/camera_platform_interface/pubspec.yaml +++ b/packages/camera/camera_platform_interface/pubspec.yaml @@ -4,7 +4,7 @@ repository: https://github.com/flutter/packages/tree/main/packages/camera/camera issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 2.13.0 +version: 2.13.1 environment: sdk: ^3.10.0 diff --git a/packages/camera/camera_platform_interface/test/camera_platform_interface_test.dart b/packages/camera/camera_platform_interface/test/camera_platform_interface_test.dart index 787122cf316b..fbb9cc91364e 100644 --- a/packages/camera/camera_platform_interface/test/camera_platform_interface_test.dart +++ b/packages/camera/camera_platform_interface/test/camera_platform_interface_test.dart @@ -353,12 +353,12 @@ void main() { expect(() => cameraPlatform.resumePreview(1), throwsUnimplementedError); }); - test('Default implementation of setJpegImageQuality() should throw unimplemented error', () { + test('Default implementation of setJpegImageQuality() is a no-op', () { // Arrange final cameraPlatform = ExtendsCameraPlatform(); // Act & Assert - expect(() => cameraPlatform.setJpegImageQuality(1, 50), throwsUnimplementedError); + expect(cameraPlatform.setJpegImageQuality(1, 50), completes); }); test('Default implementation of supportsImageStreaming() should return false', () {