Bladeren bron

Fixed iOS not disposing camera

flutter-beta
Julian Steenbakker 5 jaren geleden
bovenliggende
commit
b17de675e9
3 gewijzigde bestanden met toevoegingen van 17 en 3 verwijderingen
  1. +2
    -0
      android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt
  2. +3
    -1
      ios/Classes/QRView.swift
  3. +12
    -2
      lib/src/qr_code_scanner.dart

+ 2
- 0
android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt Bestand weergeven

@@ -70,6 +70,8 @@ class QRView(messenger: BinaryMessenger, id: Int, private val params: HashMap<St
"flipCamera" -> flipCamera(result)
"toggleFlash" -> toggleFlash(result)
"pauseCamera" -> pauseCamera(result)
// Stopping camera is the same as pausing camera
"stopCamera" -> pauseCamera(result)
"resumeCamera" -> resumeCamera(result)
"requestPermissions" -> checkAndRequestPermission(result)
"getCameraInfo" -> getCameraInfo(result)


+ 3
- 1
ios/Classes/QRView.swift Bestand weergeven

@@ -59,6 +59,8 @@ public class QRView:NSObject,FlutterPlatformView {
self?.toggleFlash(result)
case "pauseCamera":
self?.pauseCamera(result)
case "stopCamera":
self?.stopCamera(result)
case "resumeCamera":
self?.resumeCamera(result)
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
if permissionGranted {
if let sc: MTBBarcodeScanner = self.scanner {


+ 12
- 2
lib/src/qr_code_scanner.dart Bestand weergeven

@@ -251,7 +251,7 @@ class QRViewController {
}
}

/// Pauses barcode scanning
/// Pauses the camera and barcode scanning
Future<void> pauseCamera() async {
try {
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
Future<void> resumeCamera() async {
try {
@@ -280,8 +289,9 @@ class QRViewController {
}
}

/// Disposes the barcode stream.
/// Stops the camera and disposes the barcode stream.
void dispose() {
stopCamera();
_scanUpdateController.close();
}



Laden…
Annuleren
Opslaan