QRKit is a Kotlin Multiplatform library for Qr-Scan in your Android, iOS And Desktop App.
Add the dependency to your build.gradle.kts
file:
commonMain.dependencies {
implementation("network.chaintech:qr-kit:1.0.8")
}
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<key>NSCameraUsageDescription</key><string>$(PRODUCT_NAME) camera description.</string>
<key>NSPhotoLibraryUsageDescription</key><string>$(PRODUCT_NAME)photos description.</string>
QrScanner(
modifier: Modifier,
flashlightOn: Boolean,
openImagePicker: Boolean,
onCompletion: (String) -> Unit,
imagePickerHandler: (Boolean) -> Unit,
onFailure: (String) -> Unit
)
modifier
: Modifier for modifying the layout of the QR scanner.flashlightOn
: Boolean indicating whether the flashlight is turned on.openImagePicker
: Boolean indicating whether to launch the picker for selecting images.imagePickerHandler
: Callback invoked to indicate the status of the gallery, whether it's open or closed.onFailure
: Callback invoked when there's a failure during QR code scanning.QRCodeImage(
url: String,
contentDescription: String?,
modifier: Modifier = Modifier,
alignment: Alignment = Alignment.Center,
contentScale: ContentScale = ContentScale.Fit,
alpha: Float = DefaultAlpha,
colorFilter: ColorFilter? = null,
filterQuality: FilterQuality = DrawScope.DefaultFilterQuality,
onSuccess: (ImageBitmap) -> Unit = { qrImage -> },
onFailure: (String) -> Unit = { message -> }
)
fun generateQrCode(
url: String,
onSuccess: (String, ImageBitmap) -> Unit,
onFailure: (String) -> Unit
) {
try {
val imageBitmap = generateCode(url)
onSuccess(url, imageBitmap)
} catch (e: Exception) {
onFailure("${e.message}")
}
}
url
: The URL of the QR code image to be displayed.contentDescription
: A textual description of the image content for accessibility purposes. It's optional.modifier
: Modifier for modifying the layout of the QR code image.alignment
: Alignment of the QR code image within its layout bounds. Default is Alignment.Center.contentScale
: The scale strategy for fitting the QR code image content within its layout bounds. Default is ContentScale.Fit.alpha
: The opacity of the QR code image, ranging from 0.0 (fully transparent) to 1.0 (fully opaque). Default is DefaultAlpha.colorFilter
: A color filter to apply to the QR code image. Default is null.filterQuality
: The quality of the filtering applied to the QR code image. Default is DrawScope.DefaultFilterQuality.onSuccess
: Callback invoked when the QR code image is successfully loaded and decoded, passing the decoded ImageBitmap as a parameter.onFailure
: Callback invoked when there's a failure during loading or decoding the QR code image, passing an error message as a parameter.For Image Picker we had used this CMP Pick n Crop Library