diff --git a/packages/camera/camera/example/lib/main.dart b/packages/camera/camera/example/lib/main.dart index 00ac2251ba2a..2314aecbece3 100644 --- a/packages/camera/camera/example/lib/main.dart +++ b/packages/camera/camera/example/lib/main.dart @@ -594,17 +594,21 @@ class _CameraExampleHomeState extends State } void onNewCameraSelected(CameraDescription cameraDescription) async { - if (controller != null) { - await controller!.dispose(); - } + final previousCameraController = controller; + final CameraController cameraController = CameraController( cameraDescription, ResolutionPreset.medium, enableAudio: enableAudio, imageFormatGroup: ImageFormatGroup.jpeg, ); + controller = cameraController; + if (mounted) { + setState(() {}); + } + // If the controller is updated then update the UI. cameraController.addListener(() { if (mounted) setState(() {}); @@ -637,6 +641,8 @@ class _CameraExampleHomeState extends State if (mounted) { setState(() {}); } + + await previousCameraController?.dispose(); } void onTakePictureButtonPressed() {