Jetpack Compose Desktop переключиться в новое окно
Привет, я новичок в Kotlin и пробую свои силы в графическом интерфейсе в качестве своего первого небольшого проекта.
Для этого я использую Jetpack Compose Desktop. Я уже написал первое небольшое окно входа в систему (не в формате GIF) и хотел бы открыть новое окно с «фактическим» содержимым после входа в систему (не внешнее, а в том же окне).
Вот видео, которое может помочь вам понять, что я имею в виду:
(Не мой, но спасибо Мустафе - Агонуuplabs )
Таким образом, вы продолжите регистрацию в том же окне и не должны открывать для этого отдельное окно. Надеюсь, ты сможешь мне помочь :)
1 ответ
Вот пример того, как открывать и закрывать несколько окон:
fun main() = application {
val applicationState = remember { MyApplicationState() }
for (window in applicationState.windows) {
key(window) {
MyWindow(window)
}
}
}
@Composable
private fun ApplicationScope.MyWindow(
state: MyWindowState
) = Window(onCloseRequest = state::close, title = state.title) {
MenuBar {
Menu("File") {
Item("New window", onClick = state.openNewWindow)
Item("Exit", onClick = state.exit)
}
}
}
private class MyApplicationState {
val windows = mutableStateListOf<MyWindowState>()
init {
windows += MyWindowState("Initial window")
}
fun openNewWindow() {
windows += MyWindowState("Window ${windows.size}")
}
fun exit() {
windows.clear()
}
private fun MyWindowState(
title: String
) = MyWindowState(
title,
openNewWindow = ::openNewWindow,
exit = ::exit,
windows::remove
)
}
private class MyWindowState(
val title: String,
val openNewWindow: () -> Unit,
val exit: () -> Unit,
private val close: (MyWindowState) -> Unit
) {
fun close() = close(this)
}
Вы можете прочитать больше в учебниках по Compose для ПК.