sample

🧩 Syntax:
@Composable
fun ListScreen(list: MutableList<Person>, modifier: Modifier = Modifier) {
    val (stateList, updatedState) = remember { mutableStateOf(list) }

    LazyColumn(modifier = modifier.fillMaxSize()) {
        items(stateList, key = { it.name }) { person ->
            PersonItem(person) { status ->
                val updatedPerson = person.copy(isChecked = status)
                val newList = stateList.toMutableList()
                newList[stateList.indexOf(person)] = updatedPerson
                updatedState.invoke(newList)
            }
        }
    }
}


@Composable
fun PersonItem(
    person: Person = Person(),
    modifier: Modifier = Modifier,
    callback: (status: Boolean) -> Unit,
) {
    Card(
        modifier = modifier
            .fillMaxWidth()
            .padding(4.dp),
        border = BorderStroke(1.dp, Color.Black),
        shape = RoundedCornerShape(5.dp),
        colors = CardDefaults.cardColors(
            if (person.isChecked)
                Color.Blue
            else
                Color.Gray
        )
    ) {
        Row(
            modifier = Modifier
                .fillMaxWidth()
                .wrapContentHeight()
                .padding(
                    vertical = 16.dp
                ),
            verticalAlignment = Alignment.CenterVertically,
            horizontalArrangement = Arrangement.Start
        ) {
            Checkbox(checked = person.isChecked, onCheckedChange = {
                callback.invoke(it)
            })
            Text(text = person.name)
        }
    }
}

data class Person(
    val name: String = "ahmad",
    var isChecked: Boolean = false,
)

fun provideList(): MutableList<Person> {
    return mutableListOf(
        Person("ali", false),
        Person("mojtaba", true),
        Person("drog", false),
    )
}