Navaron Bracke

fix early returns in iOS implementation of mobile scanner

... ... @@ -37,24 +37,30 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin {
init(barcodeHandler: BarcodeHandler, registry: FlutterTextureRegistry) {
self.mobileScanner = MobileScanner(registry: registry, mobileScannerCallback: { barcodes, error, image in
if barcodes != nil {
if error != nil {
barcodeHandler.publishEvent(["name": "error", "data": error!.localizedDescription])
return
}
if barcodes == nil {
return
}
let barcodesMap: [Any?] = barcodes!.compactMap { barcode in
if (MobileScannerPlugin.scanWindow != nil) {
if (MobileScannerPlugin.isBarcodeInScanWindow(barcode: barcode, imageSize: image.size)) {
if (MobileScannerPlugin.scanWindow == nil) {
return barcode.data
} else {
return nil
}
} else {
if (MobileScannerPlugin.isBarcodeInScanWindow(barcode: barcode, imageSize: image.size)) {
return barcode.data
}
return nil
}
if (!barcodesMap.isEmpty) {
barcodeHandler.publishEvent(["name": "barcode", "data": barcodesMap, "image": FlutterStandardTypedData(bytes: image.jpegData(compressionQuality: 0.8)!), "width": image.size.width, "height": image.size.height])
}
} else if (error != nil){
barcodeHandler.publishEvent(["name": "error", "data": error!.localizedDescription])
}
}, torchModeChangeCallback: { torchState in
barcodeHandler.publishEvent(["name": "torchState", "data": torchState])
}, zoomScaleChangeCallback: { zoomScale in
... ... @@ -257,13 +263,15 @@ public class MobileScannerPlugin: NSObject, FlutterPlugin {
DispatchQueue.main.async {
result(nil)
}
} else {
return
}
let barcodesMap: [Any?] = barcodes!.compactMap { barcode in barcode.data }
DispatchQueue.main.async {
result(["name": "barcode", "data": barcodesMap])
}
}
})
}
}
... ...