Nikolay Igotti
4 years ago
3 changed files with 108 additions and 1 deletions
@ -1 +1,108 @@
|
||||
Fill me in. |
||||
# Getting Started with Compose for Desktop |
||||
|
||||
## What is covered |
||||
|
||||
In this tutorial we will see how to create and deploy simple desktop UI application |
||||
using Compose UI framework. |
||||
|
||||
## Prerequisites |
||||
|
||||
Compose for Desktop can produce applications for macOS, Linux and Windows platforms, |
||||
and all those three platforms could be used for running this tutorial. |
||||
|
||||
Following software have to be preinstalled: |
||||
* JDK 11 or later |
||||
* IDEA Community or Ultimate 20.2 or later (other editors could be used, but we assume IDEA in this tutorial) |
||||
|
||||
## Creating a new project |
||||
|
||||
*TBD: new project wizard* |
||||
|
||||
Recommended way of building Compose for Desktop projects is using Gradle. |
||||
JetBrains provides a convenient way of building Compose for Desktop project |
||||
using special Gradle plugin. |
||||
First create a new directory, named `sample`. |
||||
```shell script |
||||
mkdir sample |
||||
cd sample |
||||
``` |
||||
|
||||
Create `settings.gradle.kts` as following: |
||||
```kotlin |
||||
pluginManagement { |
||||
repositories { |
||||
gradlePluginPortal() |
||||
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") |
||||
} |
||||
} |
||||
``` |
||||
Then create `build.gradle.kts` with the following content: |
||||
```kotlin |
||||
import org.jetbrains.compose.compose |
||||
|
||||
plugins { |
||||
kotlin("jvm") version "1.4.0" |
||||
id("org.jetbrains.compose") version "0.1.0-dev68" |
||||
application |
||||
} |
||||
|
||||
repositories { |
||||
jcenter() |
||||
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") |
||||
} |
||||
|
||||
dependencies { |
||||
implementation(compose.desktop.all) |
||||
} |
||||
|
||||
application { |
||||
mainClassName = "MainKt" |
||||
} |
||||
``` |
||||
Then create file `src/main/kotlin/main.kt` and put there: |
||||
```kotlin |
||||
import androidx.compose.desktop.Window |
||||
import androidx.compose.foundation.Text |
||||
import androidx.compose.foundation.layout.Arrangement |
||||
import androidx.compose.foundation.layout.Column |
||||
import androidx.compose.foundation.layout.fillMaxSize |
||||
import androidx.compose.material.Button |
||||
import androidx.compose.material.MaterialTheme |
||||
import androidx.compose.runtime.mutableStateOf |
||||
import androidx.compose.runtime.remember |
||||
import androidx.compose.ui.Alignment |
||||
import androidx.compose.ui.Modifier |
||||
import androidx.compose.ui.unit.dp |
||||
|
||||
fun main() = Window { |
||||
var count = remember { mutableStateOf(0) } |
||||
MaterialTheme { |
||||
Column(Modifier.fillMaxSize(), Arrangement.spacedBy(5.dp)) { |
||||
Button(modifier = Modifier.align(Alignment.CenterHorizontally), |
||||
onClick = { |
||||
count.value++ |
||||
}) { |
||||
Text(if (count.value == 0) "Hello World" else "Clicked ${count.value}!") |
||||
} |
||||
Button(modifier = Modifier.align(Alignment.CenterHorizontally), |
||||
onClick = { |
||||
count.value = 0 |
||||
}) { |
||||
Text("Reset") |
||||
} |
||||
} |
||||
} |
||||
} |
||||
``` |
||||
Open `build.gradle.kts` as a project in IDEA. |
||||
|
||||
![New project](screen1.png) |
||||
|
||||
After downloading Compose for Desktop dependencies from Maven repositories your new project is ready |
||||
to go. Open Gradle toolbar on the right, and select `Tasks/applications/run`. |
||||
First run may take some time, and afterwards following dialog will show up: |
||||
|
||||
![Application running](screen2.gif) |
||||
|
||||
One could click on the button several times, and see that application can reactively |
||||
update UI from state. |
||||
|
After Width: | Height: | Size: 571 KiB |
After Width: | Height: | Size: 187 KiB |
Loading…
Reference in new issue