Jetpack Compose: как правильно принудительно перекомпоновать при изменении объекта состояния из viewModel?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Jetpack Compose: как правильно принудительно перекомпоновать при изменении объекта состояния из viewModel?

Сообщение Anonymous »

Вид:

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

val viewModel = hiltViewModel()

Text("STATE: ${viewModel.state.activity?.inspectionInvitation?.state?.title}")
ViewModel:

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

var state by mutableStateOf(ActivityScreenState())
private set

....

suspend fun fetchActivity(id: String) {
val resource = repository.fetchActivity(id)
val activity = resource.data

resource.errorMessage?.let {
Toast.makeText(context, it, Toast.LENGTH_SHORT).show()
}

state = state.copy(
isLoading = false,
activity = activity
)
}

suspend fun accept(invitation: Invitation) {
val tempActivity = state.activity
tempActivity?.invitation?.state = InvitationState.ACCEPTED

state = state.copy(
activity = tempActivity
)
}
ActivityScreenState:

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

data class ActivityScreenState(
val isLoading: Boolean = true,
val activity: Activity? = null,
)

data class Activity(
val id: String,
@Json(name = "inspection_invitation")
val invitation: Invitation?,
)

data class Invitation(
val id: String,
var state: InvitationState
)

enum class ActivityState(val value: String) {
@Json(name = "accepted")
ACCEPTED("accepted"),

@Json(name = "declined")
DECLINED("declined");

...

}
У меня есть класс данных viewMode и ActivityScreenState, который содержит класс данных Activity. Когда я обновляю Activity внутри ActivityScreenState, оно не перекомпоновывает мое составное представление, но я знаю, что оно изменится, если я запишу его в журнал.
Я пробовал искать, но не смог найти то, что Я делаю неправильно. Также выяснилось, что он перекомпоновывается только в том случае, если я аннулирую активность внутри ActivityState...
Я делаю что-то не так или это ошибка? Я новичок в Android и Jetpack Compose, поэтому понятия не имею, что здесь делать...

Подробнее здесь: https://stackoverflow.com/questions/787 ... -changed-f
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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