@@ -722,53 +722,53 @@ - (void)resumeVideoRecordingWithResult:(FlutterResult)result {
722722
723723- (void )setFlashModeWithResult : (FlutterResult)result mode : (NSString *)modeStr {
724724 FlashMode mode;
725- @try {
726- mode = getFlashModeForString (modeStr);
727- } @catch (NSError *e) {
728- result (getFlutterError (e));
725+ @try {
726+ mode = getFlashModeForString (modeStr);
727+ } @catch (NSError *e) {
728+ result (getFlutterError (e));
729+ return ;
730+ }
731+ if (mode == FlashModeTorch) {
732+ if (!_captureDevice.hasTorch ) {
733+ result ([FlutterError errorWithCode: @" setFlashModeFailed"
734+ message: @" Device does not support torch mode"
735+ details: nil ]);
729736 return ;
730737 }
731- if (mode == FlashModeTorch) {
732- if (!_captureDevice.hasTorch ) {
733- result ([FlutterError errorWithCode: @" setFlashModeFailed"
734- message: @" Device does not support torch mode"
735- details: nil ]);
736- return ;
737- }
738- if (!_captureDevice.isTorchAvailable ) {
739- result ([FlutterError errorWithCode: @" setFlashModeFailed"
740- message: @" Torch mode is currently not available"
741- details: nil ]);
742- return ;
743- }
744- if (_captureDevice.torchMode != AVCaptureTorchModeOn) {
745- [_captureDevice lockForConfiguration: nil ];
746- [_captureDevice setTorchMode: AVCaptureTorchModeOn];
747- [_captureDevice unlockForConfiguration ];
748- }
749- } else {
750- if (!_captureDevice.hasFlash ) {
751- result ([FlutterError errorWithCode: @" setFlashModeFailed"
752- message: @" Device does not have flash capabilities"
753- details: nil ]);
754- return ;
755- }
756- AVCaptureFlashMode avFlashMode = getAVCaptureFlashModeForFlashMode (mode);
757- if (![_capturePhotoOutput.supportedFlashModes
758- containsObject: [NSNumber numberWithInt: ((int )avFlashMode)]]) {
759- result ([FlutterError errorWithCode: @" setFlashModeFailed"
760- message: @" Device does not support this specific flash mode"
761- details: nil ]);
762- return ;
763- }
764- if (_captureDevice.torchMode != AVCaptureTorchModeOff) {
765- [_captureDevice lockForConfiguration: nil ];
766- [_captureDevice setTorchMode: AVCaptureTorchModeOff];
767- [_captureDevice unlockForConfiguration ];
768- }
738+ if (!_captureDevice.isTorchAvailable ) {
739+ result ([FlutterError errorWithCode: @" setFlashModeFailed"
740+ message: @" Torch mode is currently not available"
741+ details: nil ]);
742+ return ;
769743 }
770- _flashMode = mode;
771- result (nil );
744+ if (_captureDevice.torchMode != AVCaptureTorchModeOn) {
745+ [_captureDevice lockForConfiguration: nil ];
746+ [_captureDevice setTorchMode: AVCaptureTorchModeOn];
747+ [_captureDevice unlockForConfiguration ];
748+ }
749+ } else {
750+ if (!_captureDevice.hasFlash ) {
751+ result ([FlutterError errorWithCode: @" setFlashModeFailed"
752+ message: @" Device does not have flash capabilities"
753+ details: nil ]);
754+ return ;
755+ }
756+ AVCaptureFlashMode avFlashMode = getAVCaptureFlashModeForFlashMode (mode);
757+ if (![_capturePhotoOutput.supportedFlashModes
758+ containsObject: [NSNumber numberWithInt: ((int )avFlashMode)]]) {
759+ result ([FlutterError errorWithCode: @" setFlashModeFailed"
760+ message: @" Device does not support this specific flash mode"
761+ details: nil ]);
762+ return ;
763+ }
764+ if (_captureDevice.torchMode != AVCaptureTorchModeOff) {
765+ [_captureDevice lockForConfiguration: nil ];
766+ [_captureDevice setTorchMode: AVCaptureTorchModeOff];
767+ [_captureDevice unlockForConfiguration ];
768+ }
769+ }
770+ _flashMode = mode;
771+ result (nil );
772772}
773773
774774- (void )startImageStreamWithMessenger : (NSObject <FlutterBinaryMessenger> *)messenger {
@@ -906,12 +906,12 @@ - (BOOL)setupWriterForPath:(NSString *)path {
906906 [_videoWriter addInput: _audioWriterInput];
907907 [_audioOutput setSampleBufferDelegate: self queue: _dispatchQueue];
908908 }
909-
910- if (_flashMode == FlashModeTorch) {
911- [self .captureDevice lockForConfiguration: nil ];
912- [self .captureDevice setTorchMode: AVCaptureTorchModeOn];
913- [self .captureDevice unlockForConfiguration ];
914- }
909+
910+ if (_flashMode == FlashModeTorch) {
911+ [self .captureDevice lockForConfiguration: nil ];
912+ [self .captureDevice setTorchMode: AVCaptureTorchModeOn];
913+ [self .captureDevice unlockForConfiguration ];
914+ }
915915
916916 if (_flashMode == FlashModeTorch) {
917917 [self .captureDevice lockForConfiguration: nil ];
0 commit comments