Slide 113
Slide 113 text
Compose UI feature
// build-logic/src/main/kotlin/com/sample/features/ComposeHandler.kt
@SampleCompanyExtensionMarker
abstract class ComposeHandler @Inject internal constructor(objects: ObjectFactory) {
private val enabled = objects.property().convention(false)
internal var androidExtension: CommonExtension<*, *, *, *, *, *>? = null
internal fun enable() {
enabled.set(true)
enabled.disallowChanges()
androidExtension.apply { buildFeatures { compose = true } }
}
internal fun applyTo(project: Project) {
if (enabled.get()) {
project.plugins.apply("org.jetbrains.kotlin.plugin.compose")
project.plugins.apply("org.jetbrains.compose")
project.dependencies.apply {
add("implementation", "org.jetbrains.compose.ui:ui:$composeVersion")
add("implementation", "org.jetbrains.compose.runtime:runtime:$composeVersion")
// ...
}
}
}
}