Я хочу создать простое 30-дневное приложение с жестко закодированными данными, но у меня есть переменная, обозначающая текущий день, я хочу увеличить ее, но когда я это делаю, она делает это не совсем правильно.
@Composable
fun _30DaysApp() {
var curDay by remember { mutableStateOf(1) }
Scaffold(topBar = {
}) { it ->
LazyColumn(contentPadding = it) {
items(tasks) {
CardTask(task = it, day = curDay)
curDay++
}
}
}
}
@Composable
fun CardTask(task: Task, day: Int, modifier: Modifier = Modifier) {
var expand by remember { mutableStateOf(false) }
Card(shape = RoundedCornerShape(16.dp)) {
Column(
modifier = modifier
.padding(12.dp)
) {
Row {
Text(text = stringResource(R.string.day, day))
Spacer(modifier = modifier.weight(1f))
ExpandButton(expanded = expand, onClick = { expand = !expand })
}
Text(text = stringResource(task.articleRes))
Spacer(modifier = Modifier.size(8.dp))
Image(
painter = painterResource(task.imageRes), contentDescription = null,
contentScale = ContentScale.Fit
)
}
}
}
Пытался поднять его на функцию CardTask, но все равно не работает. Может ли кто-нибудь мне помочь, пожалуйста?
Насколько я понимаю, вы можете полностью удалить эту переменную. Государство ни для чего не нужно. Вместо этого создайте свой LazyColumn следующим образом:
LazyColumn(contentPadding = it) {
itemsIndexed(tasks) { index, task ->
CardTask(task = task, day = index + 1)
}
}
Единственное, что заслуживает такой переменной, - это если вы хотите по какой-то причине изменить «+1» во время выполнения. Тогда необходима переменная состояния. Но его нельзя изменять при построении LazyColumn.
Большое спасибо. Теперь все работает
Возможно, вам поможет, если вы включите код, который увеличивается
curDay