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 для ПК.

Другие вопросы по тегам