Showing
1 changed file
with
10 additions
and
4 deletions
| @@ -321,14 +321,20 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | @@ -321,14 +321,20 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, | ||
| 321 | } | 321 | } |
| 322 | 322 | ||
| 323 | func toggleTorch(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) { | 323 | func toggleTorch(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) { |
| 324 | - if (device == nil) { | 324 | + if (device == nil || !device.hasTorch || !device.isTorchAvailable) { |
| 325 | result(nil) | 325 | result(nil) |
| 326 | return | 326 | return |
| 327 | } | 327 | } |
| 328 | + | ||
| 329 | + let requestedTorchMode: AVCaptureDevice.TorchMode = call.arguments as! Int == 1 ? .on : .off | ||
| 330 | + | ||
| 328 | do { | 331 | do { |
| 329 | - try device.lockForConfiguration() | ||
| 330 | - device.torchMode = call.arguments as! Int == 1 ? .on : .off | ||
| 331 | - device.unlockForConfiguration() | 332 | + if (device.torchMode != requestedTorchMode) { |
| 333 | + try device.lockForConfiguration() | ||
| 334 | + device.torchMode = requestedTorchMode | ||
| 335 | + device.unlockForConfiguration() | ||
| 336 | + } | ||
| 337 | + | ||
| 332 | result(nil) | 338 | result(nil) |
| 333 | } catch { | 339 | } catch { |
| 334 | result(FlutterError(code: error.localizedDescription, message: nil, details: nil)) | 340 | result(FlutterError(code: error.localizedDescription, message: nil, details: nil)) |
-
Please register or login to post a comment