| @@ -70,6 +70,8 @@ class QRView(messenger: BinaryMessenger, id: Int, private val params: HashMap<St | |||||
| "flipCamera" -> flipCamera(result) | "flipCamera" -> flipCamera(result) | ||||
| "toggleFlash" -> toggleFlash(result) | "toggleFlash" -> toggleFlash(result) | ||||
| "pauseCamera" -> pauseCamera(result) | "pauseCamera" -> pauseCamera(result) | ||||
| // Stopping camera is the same as pausing camera | |||||
| "stopCamera" -> pauseCamera(result) | |||||
| "resumeCamera" -> resumeCamera(result) | "resumeCamera" -> resumeCamera(result) | ||||
| "requestPermissions" -> checkAndRequestPermission(result) | "requestPermissions" -> checkAndRequestPermission(result) | ||||
| "getCameraInfo" -> getCameraInfo(result) | "getCameraInfo" -> getCameraInfo(result) | ||||
| @@ -59,6 +59,8 @@ public class QRView:NSObject,FlutterPlatformView { | |||||
| self?.toggleFlash(result) | self?.toggleFlash(result) | ||||
| case "pauseCamera": | case "pauseCamera": | ||||
| self?.pauseCamera(result) | self?.pauseCamera(result) | ||||
| case "stopCamera": | |||||
| self?.stopCamera(result) | |||||
| case "resumeCamera": | case "resumeCamera": | ||||
| self?.resumeCamera(result) | self?.resumeCamera(result) | ||||
| case "getCameraInfo": | case "getCameraInfo": | ||||
| @@ -185,7 +187,7 @@ public class QRView:NSObject,FlutterPlatformView { | |||||
| } | } | ||||
| func stopScan(_ result: @escaping FlutterResult){ | |||||
| func stopCamera(_ result: @escaping FlutterResult){ | |||||
| MTBBarcodeScanner.requestCameraPermission(success: { permissionGranted in | MTBBarcodeScanner.requestCameraPermission(success: { permissionGranted in | ||||
| if permissionGranted { | if permissionGranted { | ||||
| if let sc: MTBBarcodeScanner = self.scanner { | if let sc: MTBBarcodeScanner = self.scanner { | ||||
| @@ -251,7 +251,7 @@ class QRViewController { | |||||
| } | } | ||||
| } | } | ||||
| /// Pauses barcode scanning | |||||
| /// Pauses the camera and barcode scanning | |||||
| Future<void> pauseCamera() async { | Future<void> pauseCamera() async { | ||||
| try { | try { | ||||
| await _channel.invokeMethod('pauseCamera'); | await _channel.invokeMethod('pauseCamera'); | ||||
| @@ -260,6 +260,15 @@ class QRViewController { | |||||
| } | } | ||||
| } | } | ||||
| /// Stops barcode scanning and the camera | |||||
| Future<void> stopCamera() async { | |||||
| try { | |||||
| await _channel.invokeMethod('stopCamera'); | |||||
| } on PlatformException catch (e) { | |||||
| throw CameraException(e.code, e.message); | |||||
| } | |||||
| } | |||||
| /// Resumes barcode scanning | /// Resumes barcode scanning | ||||
| Future<void> resumeCamera() async { | Future<void> resumeCamera() async { | ||||
| try { | try { | ||||
| @@ -280,8 +289,9 @@ class QRViewController { | |||||
| } | } | ||||
| } | } | ||||
| /// Disposes the barcode stream. | |||||
| /// Stops the camera and disposes the barcode stream. | |||||
| void dispose() { | void dispose() { | ||||
| stopCamera(); | |||||
| _scanUpdateController.close(); | _scanUpdateController.close(); | ||||
| } | } | ||||