Estoy usando first
la función de kotlin de flujo. La razón por la que estoy usando este first
la función es que no tengo que recoger después de la primera vez.
Si no me devuelven ningún valor booleano, que hace de la red subrayar que tengo para devolver un valor booleano. ¿Qué debo regresar? No hay ningún problema cuando yo acabo de volver de verdad, pero quiero saber lo que significa.
private fun getGroupNameData() {
viewModelScope.launch {
repository.loadGroupsWithFlow()
.buffer()
.first { newList ->
groupData.clear()
newList.forEach { newGroupData ->
groupData[newGroupData.id] = newGroupData.name
}
true // <- what is this boolean value?
}
}
}
first
Código.
/**
* The terminal operator that returns the first element emitted by the flow matching the given [predicate] and then cancels flow's collection.
* Throws [NoSuchElementException] if the flow has not contained elements matching the [predicate].
*/
public suspend fun <T> Flow<T>.first(predicate: suspend (T) -> Boolean): T {
var result: Any? = NULL
collectWhile {
if (predicate(it)) {
result = it
false
} else {
true
}
}
if (result === NULL) throw NoSuchElementException("Expected at least one element matching the predicate $predicate")
return result as T
}