Android Compose не будет обновлять состояние из изменяемого состоянияAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android Compose не будет обновлять состояние из изменяемого состояния

Сообщение Anonymous »

В настоящее время я пытаюсь использовать представление Compose вне MVVM и ViewModels, но у меня возникают серьезные проблемы с обновлениями состояния.
В настоящее время у меня правильно отображается представление Compose, и оно ссылается на mutableState, который я создал правильно, но не могу обновить состояние.
Это мой код создания и состояния. Функция составного содержимого вызывается из действия setContent{}

Код: Выделить всё

private var userState = mutableStateOf[*]>(listOf())
private var loadingState = mutableStateOf(LoadingState.SUCCESS)

@Composable
fun Content() {
TemplateProjectTheme {
Scaffold(modifier = Modifier.fillMaxSize(),
topBar = {...}) { innerPadding ->
when (loadingState.value) {
LoadingState.SUCCESS -> {
.padding(innerPadding)
.fillMaxSize()) {
GithubUsersList(
users = userState.value,
onItemClick = listUserClickRelay::send,
modifier = Modifier.fillMaxSize()
)
}
}

LoadingState.EMPTY -> {
//more compose code
}
Я обновляю состояние пользователя с помощью отдельной функции, которая обновляет изменяемое состояние.

Код: Выделить всё

fun updateUsers(users: List) {
this.userState.value = users
}
Код компоновки правильно считывает исходное состояние, но любые обновления, установленные в изменяемое состояние, не обновляются и не вызывают перекомпоновку. В отладчике я вижу обновление состояния, но рекомпозиции не происходит. Эта проблема возникает как со списком пользователей, так и с состоянием загрузки.
Это сводит меня с ума уже два дня.
Я пробовал несколько вещей, которые все не удалось.
  • Использование делегатов с ключевым словом by и импорт функций расширения компоновки setValue.
  • Перемещение mutableStateOf в запомнить функцию в блоке создания


Подробнее здесь: https://stackoverflow.com/questions/791 ... able-state
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»