Loading...
Loading...
Design, implement, and review Kotlin and Android APIs. Use when working on .kt files, Kotlin nullability, sealed classes/interfaces, coroutines, Android threading, Java interop, or Kotlin-backed React Native Nitro Module implementations.
npx skill4agent add margelo/react-native-skills kotlinbuild-nitro-modulesbarcodebarcodeTypeScannedBarcode// Avoid: related fields are nullable and the valid combinations are implicit.
data class ScannedData(
val position: Point,
val text: String?,
val barcode: String?,
val barcodeType: BarcodeType?,
val face: Rect?,
)
// Prefer: each variant exposes only the fields that are valid for it.
sealed interface ScannedData {
val position: Point
}
data class ScannedText(
override val position: Point,
val text: String,
) : ScannedData
data class ScannedBarcode(
override val position: Point,
val barcode: String,
val barcodeType: BarcodeType,
) : ScannedData
data class ScannedFace(
override val position: Point,
val face: Rect,
) : ScannedDataPromise.parallelrunBlockingPromise<T>launchwithContextdelayThread.sleepHandler.postDelayedMutexsynchronizedReentrantLockvalvar// Avoid: blocking work hidden in a getter.
val status: SessionStatus
get() = runBlocking { session.status() }
// Prefer: make the async boundary explicit.
fun getStatus(): Promise<SessionStatus> {
return Promise.async {
session.status()
}
}opendata classsealed interfacesealed classrequirecheck!!requireNotNullreturntrycatchifwhentry { return value } catch (...) { return fallback }return@map valueitems.map { it.toString() }items.map { return@map it.toString() }formats.map { it.toMLKitFormat() }map { format -> format.toMLKitFormat() }ititHybridDataScanner.ktHybridDataScannerBarcode+toScannedCode.ktTargetBarcodeFormat+toMLKitFormat.ktBarcodeFormat+fromMLKitBarcodeFormat.ktinternalfunvalvarHybrid*Type+operation.ktHybrid*PackageManagerUtils.ktListTargetBarcodeFormat.toMLKitFormat()formats.map { it.toMLKitFormat() }Array<TargetBarcodeFormat>.toMLKitFormats()IntStringDoubleAnyBarcodeFormat.Companion.fromFormat(format: Int)Int.toBarcodeFormat()Array<SomeDomainType>List<SomeDomainType>map { ... }Int@ImageCapture.FlashModeIntIntformat: IntBarcodeFormat.Companion.fromFormat(@SomeBarcodeFormat format: Int)Hybrid*Spec@Keep@DoNotStripPromise.asyncPromise.parallelPromise<T>Promise.asyncPromise.parallelPromise.resolvedPromise.rejectedTask<T>Task+await.ktPromise.async { task.await() }addOnSuccessListeneraddOnFailureListeneraddOnCanceledListenerPromise<Unit>Promise<void>NitroModules.applicationContext