我知道它LaunchedEffect(key)是在组合开始时执行的,并且在更改时也会被取消并重新执行key。但是,我希望它只执行一次,不再执行,我正在使用以下解决方法,但我觉得我错过了一些东西:
if (!launchedBefore) {
LaunchedEffect(null) {
//stuff
launchedBefore = true
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码工作得很好。但这感觉像是一个捉襟见肘的解决方法,同时可以做一些更简单的事情。我是否误解了 LaunchedEffect 的完整工作原理?
我尝试使用null和Unit作为键,因为它们从未改变,但每次组合发生时都会执行代码。
我使用新项目向导在 Intellij 设置中创建了一个新的 Jetpack Compose 桌面项目。我想像在 Android 中一样使用 ConstraintLayout,所以我添加以下行
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
Run Code Online (Sandbox Code Playgroud)
在 build.gradle 中,如下所示:
sourceSets {
val jvmMain by getting {
dependencies {
implementation(compose.desktop.currentOs)
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
}
}
val jvmTest by getting
}
Run Code Online (Sandbox Code Playgroud)
但是我仍然无法访问约束布局。
根据这个问题的答案,似乎可以在桌面中使用约束布局。我究竟做错了什么?