Код: Выделить всё
data class ExperiencesUiState(
val experiencesItems: Result = Result.success(emptyList()),
val userMessages: List = emptyList()
и я использую функцию копирования следующим образом в другом классе/модуле ExperiencesViewModel в моей библиотеке ViewModels, но получаю следующую ошибку:
Неразрешенная ссылка «копия».
для обоих операторов копирования uiState = uiState.copy....
Код: Выделить всё
class ExperiencesViewModel(
private val repository: ExperiencesRepository
) : ViewModel() {
// UI state is backed by a mutable state
var uiState = mutableStateOf(ExperiencesUiState())
private set
private var fetchJob: Job? = null
fun fetchExperiences() {
fetchJob?.cancel()
fetchJob = viewModelScope.launch {
try {
// Fetching experiences data
val experiences = repository.getAllExperiences()
uiState = uiState.copy(experiencesItems = Result.success(experiences))
} catch (ioe: IOException) {
// Explicitly specify the type for Result.failure
uiState = uiState.copy(
experiencesItems = Result.failure(ioe))
}
}
}
}
Код: Выделить всё
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(project(":repositories"))
implementation(project(":models"))
implementation(libs.androidx.lifecycle.viewmodel.android)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
implementation(platform(libs.androidx.compose.bom))
androidTestImplementation(platform(libs.androidx.compose.bom))
implementation("androidx.compose.runtime:runtime:1.7.6")
implementation("androidx.compose.runtime:runtime-livedata:1.7.6")
implementation("androidx.compose.runtime:runtime-rxjava2:1.7.6")
}
сделав следующее изменения в классе состояния пользовательского интерфейса. Я получаю сообщение об ошибке в классе ExperiencesViewModel: «Для параметра userMessages не передано значение»
Код: Выделить всё
data class ExperiencesUiState(
val experiencesItems: Result =
Result.success(emptyList()),
val userMessages: Result
)
Код: Выделить всё
val userMessages: Result=listOf()
Код: Выделить всё
class ExperiencesViewModel(
private val repository: ExperiencesRepository
) : ViewModel() {
// UI state is backed by a mutable state
//var uiState = MutableStateFlow(ExperiencesUiState())
private val _uiState = MutableStateFlow(ExperiencesUiState())
val uiState: StateFlow = _uiState.asStateFlow()
private var fetchJob: Job? = null
fun fetchExperiences() {
fetchJob?.cancel()
fetchJob = viewModelScope.launch {
try {
// Fetching experiences data
val experiences = repository.getAllExperiences()
_uiState.update {
it.copy(experiencesItems = experiences)
}
} catch (ioe: IOException) {
// Explicitly specify the type for Result.failure
_uiState.update {
val messages = Result.failure(ioe)
it.copy(userMessages = messages)
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... data-class