Элемент LazyColumn с RadioButton

У меня есть LazyColumn, элементы которого имеют RadioButton и Text.

      @Composable
private fun UserList(
    modifier: Modifier,
    users: List<User>,
    selectedUser: User?,
    onUserSelected: (User) -> Unit
) { // <-- This gets called again with the selectedUser
    LazyColumn(modifier = modifier) { // <-- This also gets called again
        items(
            items = users,
            key = { it.id }
        ) { user ->
            Row( // <-- This never gets called
                verticalAlignment = Alignment.CenterVertically,
                modifier = Modifier
                    .fillMaxWidth()
                    .padding(horizontal = 16.dp)
                    .height(48.dp)
                    .selectable(user.id == selectedUser?.id) {
                        onUserSelected(user)
                    }
            ) {
                RadioButton(
                    selected = user.id == selectedUser?.id,
                    onClick = { onUserSelected(user) }
                )
                Text(
                    text = user.phone,
                    style = MaterialTheme.typography.subtitle1.merge(),
                    modifier = Modifier.padding(start = 16.dp)
                )
            }
        }
    }
}

Когда я нажимаю на элемент, слушатель onUserSelectedвызывается, который изменяет состояние в ViewModel. И также делает это составное перекомпонованное. Но RadioButton никогда не выбирается.

После отладки я обнаружил: составной UserList перекомпонован как аргумент selectedUserменяется. Тем не менее Row composable никогда не перекомпоновывается.

Еще одно наблюдение: если я сначала прокручиваю элементы, а затем щелкаю по любому элементу, это работает абсолютно нормально и выбирается переключатель.

Более того, это нормально работало с Beta07.

0 ответов

Другие вопросы по тегам