Jetpack Compose je declaratívny framework pre tvorbu UI. Pôvodne bol navrhnutý pre Android, ale vďaka Compose Multiplatform ho môžeme používať aj na desktop.
V build.gradle.kts:
plugins {
kotlin("jvm") version "2.0.21"
id("org.jetbrains.compose") version "1.7.1"
id("org.jetbrains.kotlin.plugin.compose") version "2.0.21"
}
dependencies {
implementation(compose.desktop.currentOs)
implementation(compose.material3)
}
import androidx.compose.desktop.ui.tooling.preview.Preview
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.window.Window
import androidx.compose.ui.window.application
@Composable
@Preview
fun App() {
var text by remember { mutableStateOf("Hello, World!") }
MaterialTheme {
Surface {
Text(text)
}
}
}
fun main() = application {
Window(
onCloseRequest = ::exitApplication,
title = "Moja Aplikacia"
) {
App()
}
}
Compose funguje na princípe rekompozície - keď sa zmení stav (state), automaticky sa prekreslí len časť UI, ktorá závisí na danom stave:
@Composable
fun Counter() {
var count by remember { mutableStateOf(0) }
Button(onClick = { count++ }) {
Text("Kliknute: $count")
}
}
remembersi pamätá hodnotu medzi rekompozíciami.mutableStateOfvytvorí reaktívny stav.
Vytvor Compose Desktop aplikáciu s oknom a vlastnou composable funkciou App.
Doplň počítadlo, ktorého hodnota sa po kliknutí na tlačidlo zvýši.
Over, že sa text s hodnotou počítadla po zmene stavu automaticky prekreslí.