Состояние 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

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