From b5a8ceecfe442d6986caf3aec5afda238c5326bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Silva=20Oliveira?= Date: Fri, 8 Apr 2022 15:53:22 +0200 Subject: [PATCH 01/10] [camera] Fix preview pause orientation --- packages/camera/camera/CHANGELOG.md | 4 ++++ packages/camera/camera/lib/src/camera_controller.dart | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md index cf502221efa0..41b4408032f2 100644 --- a/packages/camera/camera/CHANGELOG.md +++ b/packages/camera/camera/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.4+20 + +* * Fix `lockedCaptureOrientation` not affecting preview orientation when paused. + ## 0.9.4+19 * Migrate deprecated Scaffold SnackBar methods to ScaffoldMessenger. diff --git a/packages/camera/camera/lib/src/camera_controller.dart b/packages/camera/camera/lib/src/camera_controller.dart index 1492ca193761..d24272d56384 100644 --- a/packages/camera/camera/lib/src/camera_controller.dart +++ b/packages/camera/camera/lib/src/camera_controller.dart @@ -359,8 +359,8 @@ class CameraController extends ValueNotifier { await CameraPlatform.instance.pausePreview(_cameraId); value = value.copyWith( isPreviewPaused: true, - previewPauseOrientation: - Optional.of(value.deviceOrientation)); + previewPauseOrientation: Optional.fromNullable( + value.lockedCaptureOrientation ?? value.deviceOrientation)); } on PlatformException catch (e) { throw CameraException(e.code, e.message); } From dc04785b3f1e5d031b940c5e0977440594f133a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Silva=20Oliveira?= Date: Fri, 8 Apr 2022 15:53:22 +0200 Subject: [PATCH 02/10] [camera] Fix preview pause orientation --- packages/camera/camera/CHANGELOG.md | 4 ++++ packages/camera/camera/lib/src/camera_controller.dart | 4 ++-- packages/camera/camera/pubspec.yaml | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md index cf502221efa0..41b4408032f2 100644 --- a/packages/camera/camera/CHANGELOG.md +++ b/packages/camera/camera/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.4+20 + +* * Fix `lockedCaptureOrientation` not affecting preview orientation when paused. + ## 0.9.4+19 * Migrate deprecated Scaffold SnackBar methods to ScaffoldMessenger. diff --git a/packages/camera/camera/lib/src/camera_controller.dart b/packages/camera/camera/lib/src/camera_controller.dart index 1492ca193761..d24272d56384 100644 --- a/packages/camera/camera/lib/src/camera_controller.dart +++ b/packages/camera/camera/lib/src/camera_controller.dart @@ -359,8 +359,8 @@ class CameraController extends ValueNotifier { await CameraPlatform.instance.pausePreview(_cameraId); value = value.copyWith( isPreviewPaused: true, - previewPauseOrientation: - Optional.of(value.deviceOrientation)); + previewPauseOrientation: Optional.fromNullable( + value.lockedCaptureOrientation ?? value.deviceOrientation)); } on PlatformException catch (e) { throw CameraException(e.code, e.message); } diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml index 2533583d9a6e..feb83f95cd8d 100644 --- a/packages/camera/camera/pubspec.yaml +++ b/packages/camera/camera/pubspec.yaml @@ -4,7 +4,7 @@ description: A Flutter plugin for controlling the camera. Supports previewing Dart. repository: https://github.com/flutter/plugins/tree/main/packages/camera/camera issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.9.4+19 +version: 0.9.4+20 environment: sdk: ">=2.14.0 <3.0.0" From 989b2651caf721a670843f0ca6dcafb10839573c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Silva=20Oliveira?= Date: Sun, 10 Apr 2022 20:17:20 +0200 Subject: [PATCH 03/10] Adds pausePreview test --- packages/camera/camera/test/camera_test.dart | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packages/camera/camera/test/camera_test.dart b/packages/camera/camera/test/camera_test.dart index c4e0c9388231..154f177d04d2 100644 --- a/packages/camera/camera/test/camera_test.dart +++ b/packages/camera/camera/test/camera_test.dart @@ -1162,6 +1162,28 @@ void main() { DeviceOrientation.portraitUp); }); + test( + 'pausePreview() sets previewPauseOrientation according to locked orientation', + () async { + final CameraController cameraController = CameraController( + const CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + await cameraController + .lockCaptureOrientation(DeviceOrientation.landscapeLeft); + + await cameraController.pausePreview(); + + expect(cameraController.value.isPreviewPaused, equals(true)); + expect(cameraController.value.deviceOrientation, + DeviceOrientation.portraitUp); + expect(cameraController.value.previewPauseOrientation, + DeviceOrientation.landscapeLeft); + }); + test('pausePreview() does not call $CameraPlatform when already paused', () async { final CameraController cameraController = CameraController( From 3bb03d9f4e537d6b3827059de07076deeb0d29d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Silva=20Oliveira?= Date: Sun, 10 Apr 2022 21:13:51 +0200 Subject: [PATCH 04/10] Uses copyWith instead of calling lockCaptureOrientation() --- packages/camera/camera/test/camera_test.dart | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/camera/camera/test/camera_test.dart b/packages/camera/camera/test/camera_test.dart index 154f177d04d2..035364ea2b2c 100644 --- a/packages/camera/camera/test/camera_test.dart +++ b/packages/camera/camera/test/camera_test.dart @@ -14,6 +14,7 @@ import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; import 'package:plugin_platform_interface/plugin_platform_interface.dart'; +import 'package:quiver/core.dart'; List get mockAvailableCameras => [ const CameraDescription( @@ -1172,16 +1173,19 @@ void main() { sensorOrientation: 90), ResolutionPreset.max); await cameraController.initialize(); - await cameraController - .lockCaptureOrientation(DeviceOrientation.landscapeLeft); + cameraController.value = cameraController.value.copyWith( + deviceOrientation: DeviceOrientation.portraitUp, + lockedCaptureOrientation: + const Optional.fromNullable( + DeviceOrientation.landscapeRight)); await cameraController.pausePreview(); expect(cameraController.value.isPreviewPaused, equals(true)); expect(cameraController.value.deviceOrientation, - DeviceOrientation.portraitUp); + equals(DeviceOrientation.portraitUp)); expect(cameraController.value.previewPauseOrientation, - DeviceOrientation.landscapeLeft); + equals(DeviceOrientation.landscapeRight)); }); test('pausePreview() does not call $CameraPlatform when already paused', From d221e077e680f7821a08a6a4fe25dfe8b904aa73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Silva=20Oliveira?= Date: Tue, 12 Apr 2022 16:57:15 +0200 Subject: [PATCH 05/10] Fixes text in accordance to style guide --- packages/camera/camera/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md index 41b4408032f2..e286537d2e7b 100644 --- a/packages/camera/camera/CHANGELOG.md +++ b/packages/camera/camera/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.9.4+20 -* * Fix `lockedCaptureOrientation` not affecting preview orientation when paused. +* Fixes orientation when pausing preview with orientation locked. ## 0.9.4+19 From 79a8dad6644df8ac7e74290e86088040258fee08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Silva=20Oliveira?= Date: Fri, 22 Apr 2022 17:48:25 +0200 Subject: [PATCH 06/10] version update 0.9.4+21 --- packages/camera/camera/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml index feb83f95cd8d..f62777044617 100644 --- a/packages/camera/camera/pubspec.yaml +++ b/packages/camera/camera/pubspec.yaml @@ -4,7 +4,7 @@ description: A Flutter plugin for controlling the camera. Supports previewing Dart. repository: https://github.com/flutter/plugins/tree/main/packages/camera/camera issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.9.4+20 +version: 0.9.4+21 environment: sdk: ">=2.14.0 <3.0.0" From 9f1ccc05e6e80b451bf0c0819102fd89e169e91d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Silva=20Oliveira?= Date: Fri, 29 Apr 2022 09:12:37 +0200 Subject: [PATCH 07/10] Version update 0.9.4+22 --- packages/camera/camera/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml index f62777044617..fde6663844c2 100644 --- a/packages/camera/camera/pubspec.yaml +++ b/packages/camera/camera/pubspec.yaml @@ -4,7 +4,7 @@ description: A Flutter plugin for controlling the camera. Supports previewing Dart. repository: https://github.com/flutter/plugins/tree/main/packages/camera/camera issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.9.4+21 +version: 0.9.4+22 environment: sdk: ">=2.14.0 <3.0.0" From 2020524dc819eb97d9503adab64a3e6b5923096a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Silva=20Oliveira?= Date: Tue, 10 May 2022 21:44:34 +0200 Subject: [PATCH 08/10] Fix versioning --- packages/camera/camera/CHANGELOG.md | 5 ++++- packages/camera/camera/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md index 38acfb2195d9..6c832c45c824 100644 --- a/packages/camera/camera/CHANGELOG.md +++ b/packages/camera/camera/CHANGELOG.md @@ -1,6 +1,9 @@ -## 0.9.4+22 +## 0.9.4+23 * Fixes preview orientation when pausing preview with locked orientation. + +## 0.9.4+22 + * Removes unnecessary imports. * Fixes library_private_types_in_public_api, sort_child_properties_last and use_key_in_widget_constructors lint warnings. diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml index fde6663844c2..9d56f1b6e4da 100644 --- a/packages/camera/camera/pubspec.yaml +++ b/packages/camera/camera/pubspec.yaml @@ -4,7 +4,7 @@ description: A Flutter plugin for controlling the camera. Supports previewing Dart. repository: https://github.com/flutter/plugins/tree/main/packages/camera/camera issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.9.4+22 +version: 0.9.4+23 environment: sdk: ">=2.14.0 <3.0.0" From 1e8dbb14b7b3bf2d49374db61eebc3eee6caf4e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Silva=20Oliveira?= Date: Tue, 10 May 2022 22:10:24 +0200 Subject: [PATCH 09/10] Uses .of instead of .fromNullable for nonnullables --- packages/camera/camera/lib/src/camera_controller.dart | 6 +++--- packages/camera/camera/test/camera_test.dart | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/camera/camera/lib/src/camera_controller.dart b/packages/camera/camera/lib/src/camera_controller.dart index d24272d56384..5014795320f2 100644 --- a/packages/camera/camera/lib/src/camera_controller.dart +++ b/packages/camera/camera/lib/src/camera_controller.dart @@ -359,7 +359,7 @@ class CameraController extends ValueNotifier { await CameraPlatform.instance.pausePreview(_cameraId); value = value.copyWith( isPreviewPaused: true, - previewPauseOrientation: Optional.fromNullable( + previewPauseOrientation: Optional.of( value.lockedCaptureOrientation ?? value.deviceOrientation)); } on PlatformException catch (e) { throw CameraException(e.code, e.message); @@ -520,7 +520,7 @@ class CameraController extends ValueNotifier { value = value.copyWith( isRecordingVideo: true, isRecordingPaused: false, - recordingOrientation: Optional.fromNullable( + recordingOrientation: Optional.of( value.lockedCaptureOrientation ?? value.deviceOrientation)); } on PlatformException catch (e) { throw CameraException(e.code, e.message); @@ -762,7 +762,7 @@ class CameraController extends ValueNotifier { await CameraPlatform.instance.lockCaptureOrientation( _cameraId, orientation ?? value.deviceOrientation); value = value.copyWith( - lockedCaptureOrientation: Optional.fromNullable( + lockedCaptureOrientation: Optional.of( orientation ?? value.deviceOrientation)); } on PlatformException catch (e) { throw CameraException(e.code, e.message); diff --git a/packages/camera/camera/test/camera_test.dart b/packages/camera/camera/test/camera_test.dart index 95aebd93cd24..0d3195ba4b4b 100644 --- a/packages/camera/camera/test/camera_test.dart +++ b/packages/camera/camera/test/camera_test.dart @@ -1195,8 +1195,7 @@ void main() { isPreviewPaused: false, deviceOrientation: DeviceOrientation.portraitUp, lockedCaptureOrientation: - const Optional.fromNullable( - DeviceOrientation.landscapeRight)); + Optional.of(DeviceOrientation.landscapeRight)); await cameraController.pausePreview(); From 715d746811a182195f7991b54fbc6eaf34c6ed40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Silva=20Oliveira?= Date: Wed, 11 May 2022 18:29:38 +0200 Subject: [PATCH 10/10] Version update 0.9.4+24 --- packages/camera/camera/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml index 9d56f1b6e4da..d763843d0572 100644 --- a/packages/camera/camera/pubspec.yaml +++ b/packages/camera/camera/pubspec.yaml @@ -4,7 +4,7 @@ description: A Flutter plugin for controlling the camera. Supports previewing Dart. repository: https://github.com/flutter/plugins/tree/main/packages/camera/camera issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.9.4+23 +version: 0.9.4+24 environment: sdk: ">=2.14.0 <3.0.0"