我是使用 swiftui 的 iOS 开发人员。 现在我有一个android项目,所以我开始学习jetpack compose。
但是我下面有一个与 swiftui 状态不同的问题。
package com.example.myapplication
import androidx.compose.material3.Slider import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.tooling.preview.Preview import com.example.myapplication.ui.theme.MyApplicationTheme import kotlin.random.Random import kotlin.random.nextInt
@Composable fun MainScreen() {
var sliderValue by remember { mutableStateOf(0.5f) }
var targetValue: Int = Random.nextInt(0..100)
Text(text = ("The Target score is $targetValue"))
TargetSlider(value = sliderValue, changeValue = {value ->
sliderValue = value
}) }
@Preview(showBackground = true, showSystemUi = true) @Composable fun MainScreenPreview() {
MyApplicationTheme {
MainScreen()
} }
我认为因为我没有将 targetValue 声明为记住,所以当我在实时预览中移动滑块时, Text(text = ("目标分数是 $targetValue") 中的 targetValue 不应该改变。
但是当我检查实时预览或运行应用程序时,每当我移动滑块时,滑块中的 $targetValue 都会发生变化......我无法理解。
我的想法: (1) 声明为“by Remember”的变量在更改时更新 UI。 (2) 何时调用 Random.nextInt() ?为什么每次移动滑块时 targetValue 都会改变..?
帮助