С моей точки зрения вызывается addOrUpdateTempTransport.
private val _tempTransportDetails = MutableStateFlow(listOf())
val tempTransportDetails: StateFlow = _tempTransportDetails
val allTransportDetails = combine(
_transportDetails,
_tempTransportDetails
) { savedTransports, tempTransports ->
Log.d("StayDetailsViewModel", "Saved Transports = $savedTransports")
Log.d("StayDetailsViewModel", "Temp Transports = $tempTransports")
val combined = savedTransports + tempTransports
Log.d("StayDetailsViewModel", "Combined without filter: $combined")
Log.d("StayDetailsViewModel", "Combined Transports: $combined")
combined
}.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), emptyList())
fun addOrUpdateTempTransport(transport: TransportView) {
Log.d("StayDetailsViewModel", "Temp Transport before update: ${_tempTransportDetails.value}")
val updatedList = _tempTransportDetails.value.toMutableList().apply {
val index = indexOfFirst { it.id == transport.id }
if (index != -1) {
this[index] = transport // Mettre à jour l'élément existant
} else {
add(transport) // Ajouter un nouveau transport
}
}
_tempTransportDetails.value = updatedList
Log.d("StayDetailsViewModel", "After update: ${_tempTransportDetails.value}")
}
Вот логи, которые помогут вам понять мой неродной язык
Спасибо всем.
Журналы
РЕДАКТИРОВАТЬ
Я попробовал с новым списком, результат тот же
fun addOrUpdateTempTransport(transport: TransportView) {
// Créer une nouvelle liste distincte à partir des éléments de _tempTransportDetails
val updatedList = mutableListOf().apply {
// Parcourir chaque élément de _tempTransportDetails et l'ajouter à la nouvelle liste
_tempTransportDetails.value.forEach { item ->
add(item)
}
// Ajouter le nouvel objet transport
add(transport)
}
// Mettre à jour _tempTransportDetails avec cette nouvelle liste
_tempTransportDetails.value = updatedList
// Log pour déboguer
Log.d("StayDetailsViewModel", "Updated tempTransportDetails with new list: ${_tempTransportDetails.value}")
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-kotlin
Мобильная версия