Nivel 9
Nivel 9: stack de red completo (Retrofit + Repository)
Traducción al español en progresoEl contenido detallado de esta lección aún se está traduciendo. Mientras tanto, se muestra en inglés.
Clean Architecture Data Layer
The "Clean Architecture" way to fetch data.
📚 Explicación
Clean Architecture separates concerns: API (Retrofit interface), Repository (data source abstraction), and ViewModel (business logic). Retrofit uses suspend functions for coroutines. `stateIn` converts a Flow to a StateFlow, sharing the subscription across collectors.
Nota: La ejecución de código no está disponible para Android/Kotlin en el navegador. Usa Android Studio para ejecutar y probar la app.
// The Interface (API)import retrofit2.http.GETinterface UserService {@GET("users/me")suspend fun getUser(): UserDto // Suspend function for Coroutines}// The Repository (Data Source)import javax.inject.Injectclass UserRepository @Inject constructor(private val api: UserService) {// Expose a Flow, or a suspend functionfun getUserStream(): Flow<User> = flow {emit(api.getUser().toDomain())}}// The Consumption (ViewModel)@HiltViewModelclass MainViewModel @Inject constructor(private val repository: UserRepository) : ViewModel() {val userState = repository.getUserStream().stateIn(scope = viewModelScope,started = SharingStarted.WhileSubscribed(5000),initialValue = User.Empty)}