Состояние Android Compose недоступно внутри сопрограмм KotlinAndroid

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

Сообщение Anonymous »

У меня есть что-то вроде этого:

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

class MyViewmodel(repository: Repository, sv: SaveStateHandle): Viewmodel() {

var user by mutableStateOf(User(id = "", name = "")
private set
init {

user = User(id = sv.["id"], name = sv.["name"]) // here works perfectly the data is set
getInfo()

}

fun getInfo() {
//debuging here user data is ok
viewmodelScope.launch(Dispatchers.IO) {

repository.getInfo(id = user.id) // here's the problem  user.id is empty
}

}

}
Перед выполнением метода getInfo пользовательские данные в порядке, и после завершения сопрограммы тоже
Я тестировал без Dispatchers.IO, и это работает, но мне нужно чтобы запустить его в потоке ввода-вывода, и я хотел бы знать, почему возникает эта ошибка, и найти какое-либо решение этой проблемы.
Если я сделаю следующее, все будет работать нормально:

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

  fun getInfo() {
val id=user.id
viewmodelScope.launch(Dispatchers.IO) {

repository.getInfo(id = id)
}

}
однако мне хотелось бы знать, почему это не работает по-другому:

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

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

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

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

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

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

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