diff --git a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart index 7aff7a88c..4a65923a2 100644 --- a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart +++ b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart @@ -32,10 +32,14 @@ import 'zoom_state.dart'; /// The Android implementation of [CameraPlatform] that uses the CameraX library. class AndroidCameraCameraX extends CameraPlatform { /// Constructs an [AndroidCameraCameraX]. - /// - /// [shouldCreateDetachedObjectForTesting] is for testing only and thus, - /// is set to `false` by default. - AndroidCameraCameraX({this.shouldCreateDetachedObjectForTesting = false}); + AndroidCameraCameraX() : _shouldCreateDetachedObjectForTesting = false; + + /// TODO better documenation. + @visibleForTesting + AndroidCameraCameraX.forTesting( + {bool shouldCreateDetachedObjectForTesting = false}) + : _shouldCreateDetachedObjectForTesting = + shouldCreateDetachedObjectForTesting; /// Registers this class as the default instance of [CameraPlatform]. static void registerWith() { @@ -99,8 +103,7 @@ class AndroidCameraCameraX extends CameraPlatform { /// Conditional used to create detached objects for testing their /// callback methods. - @visibleForTesting - final bool shouldCreateDetachedObjectForTesting; + final bool _shouldCreateDetachedObjectForTesting; /// The controller we need to stream image data. @visibleForTesting @@ -507,7 +510,7 @@ class AndroidCameraCameraX extends CameraPlatform { // shouldCreateDetachedObjectForTesting is used to create an Analyzer // detached from the native sideonly to test the logic of the Analyzer // instance that will be used for image streaming. - final Analyzer analyzer = shouldCreateDetachedObjectForTesting + final Analyzer analyzer = _shouldCreateDetachedObjectForTesting ? Analyzer.detached(analyze: analyze) : Analyzer(analyze: analyze); @@ -608,7 +611,7 @@ class AndroidCameraCameraX extends CameraPlatform { // shouldCreateDetachedObjectForTesting is used to create an Observer // detached from the native side only to test the logic of the Analyzer // instance that will be used for image streaming. - return shouldCreateDetachedObjectForTesting + return _shouldCreateDetachedObjectForTesting ? Observer.detached(onChanged: onChanged) : Observer(onChanged: onChanged); } diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart index f74445f4f..9806740b5 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart @@ -482,8 +482,8 @@ void main() { test( 'resumePreview binds preview to lifecycle and updates camera state observers if not already bound', () async { - final AndroidCameraCameraX camera = - AndroidCameraCameraX(shouldCreateDetachedObjectForTesting: true); + final AndroidCameraCameraX camera = AndroidCameraCameraX.forTesting( + shouldCreateDetachedObjectForTesting: true); final MockProcessCameraProvider mockProcessCameraProvider = MockProcessCameraProvider(); final MockCamera mockCamera = MockCamera(); @@ -518,8 +518,8 @@ void main() { test( 'buildPreview returns a FutureBuilder that does not return a Texture until the preview is bound to the lifecycle', () async { - final AndroidCameraCameraX camera = - AndroidCameraCameraX(shouldCreateDetachedObjectForTesting: true); + final AndroidCameraCameraX camera = AndroidCameraCameraX.forTesting( + shouldCreateDetachedObjectForTesting: true); final MockProcessCameraProvider mockProcessCameraProvider = MockProcessCameraProvider(); final MockCamera mockCamera = MockCamera(); @@ -557,8 +557,8 @@ void main() { test( 'buildPreview returns a FutureBuilder that returns a Texture once the preview is bound to the lifecycle', () async { - final AndroidCameraCameraX camera = - AndroidCameraCameraX(shouldCreateDetachedObjectForTesting: true); + final AndroidCameraCameraX camera = AndroidCameraCameraX.forTesting( + shouldCreateDetachedObjectForTesting: true); final MockProcessCameraProvider mockProcessCameraProvider = MockProcessCameraProvider(); final MockCamera mockCamera = MockCamera(); @@ -823,9 +823,12 @@ void main() { /// Mock of [AndroidCameraCameraX] that stubs behavior of some methods for /// testing. +/// TODO rename this to fake. class MockAndroidCameraCameraX extends AndroidCameraCameraX { - MockAndroidCameraCameraX( - {super.shouldCreateDetachedObjectForTesting = false}); + MockAndroidCameraCameraX({bool shouldCreateDetachedObjectForTesting = false}) + : super.forTesting( + shouldCreateDetachedObjectForTesting: + shouldCreateDetachedObjectForTesting); bool cameraPermissionsRequested = false; bool startedListeningForDeviceOrientationChanges = false;