Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,8 @@ val client by lazy {

@Composable
fun App() {
var serviceOrNull: UserService? by remember { mutableStateOf(null) }

LaunchedEffect(Unit) {
serviceOrNull = client.rpc {
val rpcClient = remember {
client.rpc {
url {
host = DEV_SERVER_HOST
port = 8080
Expand All @@ -48,53 +46,51 @@ fun App() {
json()
}
}
}.withService()
}
}

val service = serviceOrNull // for smart casting
val service: UserService = remember { rpcClient.withService() }

if (service != null) {
var greeting by remember { mutableStateOf<String?>(null) }
val news = remember { mutableStateListOf<String>() }
var greeting by remember { mutableStateOf<String?>(null) }
val news = remember { mutableStateListOf<String>() }

LaunchedEffect(service) {
greeting = service.hello(
"User from ${getPlatform().name} platform",
UserData("Berlin", "Smith")
)
}
LaunchedEffect(service) {
greeting = service.hello(
"User from ${getPlatform().name} platform",
UserData("Berlin", "Smith")
)
}

LaunchedEffect(service) {
service.subscribeToNews().collect { article ->
news.add(article)
}
LaunchedEffect(service) {
service.subscribeToNews().collect { article ->
news.add(article)
}
}

MaterialTheme {
var showIcon by remember { mutableStateOf(false) }
MaterialTheme {
var showIcon by remember { mutableStateOf(false) }

Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
greeting?.let {
Text(it)
} ?: run {
Text("Establishing server connection...")
}
Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
greeting?.let {
Text(it)
} ?: run {
Text("Establishing server connection...")
}

news.forEach {
Text("Article: $it")
}
news.forEach {
Text("Article: $it")
}

Button(onClick = { showIcon = !showIcon }) {
Text("Click me!")
}
Button(onClick = { showIcon = !showIcon }) {
Text("Click me!")
}

AnimatedVisibility(showIcon) {
Column(
Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(painterResource(Res.drawable.compose_multiplatform), null)
}
AnimatedVisibility(showIcon) {
Column(
Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(painterResource(Res.drawable.compose_multiplatform), null)
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion samples/ktor-all-platforms-app/gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[versions]
kotlin = "2.2.0"

agp = "8.11.0-alpha07"
agp = "8.11.0"
android-compileSdk = "36"
android-minSdk = "24"
android-targetSdk = "36"
Expand Down