【发布时间】:2021-07-30 18:06:25
【问题描述】:
- 你好 我使用 jetpack compose 创建了一个随机生成一系列数字的程序。 并将它们返回到文本视图。一世 也使用了一个滑块来设置这个范围,但是当我改变滑块时, 数字不断变化,仿佛陷入了一个循环。是什么 这个问题的原因是什么?我该怎么办? 谢谢
这是我的 RandomGenerator 类 ->
class RandomGenerator (
private val stringSource: String,
private val outputLength: Long = 4,
private val startFrom: Int,
private val to: Int) {
@RequiresApi(Build.VERSION_CODES.N)
fun generate(): String {
return Random()
.ints(outputLength, startFrom, to)
.asSequence()
.map(stringSource::get)
.joinToString("")
}
}
这是我返回 Int 的 Slider
@Composable
fun slider() : Int
{
var sliderPosition by remember { mutableStateOf(1f) }
Slider(
modifier = Modifier.padding(10.dp).size(180.dp),
value = sliderPosition,
valueRange = 1f..10f,
onValueChange = {sliderPosition = it}
)
return sliderPosition.roundToInt()
}
还有……
setContent {
var msg by rememberSaveable { mutableStateOf("") }
Column(modifier = Modifier
.fillMaxSize()
.padding(10.dp)) {
val len = slider()
val result = RandomGenerator(numbers, 10, 0, len).generate()
msg = resutl
Text(text = msg)
}
}
【问题讨论】:
-
用返回改变状态是行不通的,你想传递一个 lambda 来“通知”改变。
-
怎么样?请你解释一下好吗?
-
看看官方的示例和指南来编写,你似乎错过了 Compose 概念如何工作的一些基础知识。