Просмотр исходного кода

CutOutBottomOffset taken from the overlay parameter of QRView

flutter-beta
Tihomirov 5 лет назад
Родитель
Сommit
e9570b7919
2 измененных файлов: 30 добавлений и 12 удалений
  1. +23
    -6
      android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt
  2. +7
    -6
      lib/src/qr_code_scanner.dart

+ 23
- 6
android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt Просмотреть файл

@@ -88,7 +88,11 @@ class QRView(private val context: Context, messenger: BinaryMessenger, private v
"getCameraInfo" -> getCameraInfo(result) "getCameraInfo" -> getCameraInfo(result)
"getFlashInfo" -> getFlashInfo(result) "getFlashInfo" -> getFlashInfo(result)
"getSystemFeatures" -> getSystemFeatures(result) "getSystemFeatures" -> getSystemFeatures(result)
"changeScanArea" -> changeScanArea(call.arguments as Double, result)
"changeScanArea" -> changeScanArea(
call.argument<Double>("cutOutSize")!!,
call.argument<Double>("cutOutBottomOffset")!!,
result,
)
else -> result.notImplemented() else -> result.notImplemented()
} }
} }
@@ -248,16 +252,29 @@ class QRView(private val context: Context, messenger: BinaryMessenger, private v
} }
} }


private fun changeScanArea(newSize: Double, result: MethodChannel.Result) {
setScanAreaSize(newSize, newSize)
private fun changeScanArea(
cutOutSize: Double,
cutOutBottomOffset: Double,
result: MethodChannel.Result
) {
setScanAreaSize(cutOutSize, cutOutSize, cutOutBottomOffset)
result.success(true) result.success(true)
} }


private fun setScanAreaSize(dpScanAreaWidth: Double, dpScanAreaHeight: Double) {
barcodeView?.setFramingRect (convertDpToPixels(dpScanAreaWidth), convertDpToPixels(dpScanAreaHeight), convertDpToPixels(150.0))
private fun setScanAreaSize(
dpScanAreaWidth: Double,
dpScanAreaHeight: Double,
dpCutOutBottomOffset: Double
) {
barcodeView?.setFramingRect(
convertDpToPixels(dpScanAreaWidth),
convertDpToPixels(dpScanAreaHeight),
convertDpToPixels(dpCutOutBottomOffset),
)
} }


private fun convertDpToPixels(dp: Double) = (dp * context.resources.displayMetrics.density).toInt()
private fun convertDpToPixels(dp: Double) =
(dp * context.resources.displayMetrics.density).toInt()


private fun hasCameraPermission(): Boolean { private fun hasCameraPermission(): Boolean {
return permissionGranted || return permissionGranted ||


+ 7
- 6
lib/src/qr_code_scanner.dart Просмотреть файл

@@ -342,13 +342,14 @@ class QRViewController {
throw CameraException(e.code, e.message); throw CameraException(e.code, e.message);
} }
} else if (defaultTargetPlatform == TargetPlatform.android) { } else if (defaultTargetPlatform == TargetPlatform.android) {
final cutOutSize = overlay?.cutOutSize;
if (cutOutSize != null) {
await channel.invokeMethod(
'changeScanArea',
cutOutSize,
);
if (overlay == null) {
return false;
} }
await channel.invokeMethod('changeScanArea', {
'cutOutSize': overlay.cutOutSize,
'cutOutBottomOffset': overlay.cutOutBottomOffset
});
return true;
} }
return false; return false;
} }


Загрузка…
Отмена
Сохранить