Implementación de readaptación en Kotlin – Parámetro por defecto del método

Estoy tratando de implementar esto comenzando con Retrofit para Android en Kotlin . He llegado al extremo de crear una instancia de la class Retrofit , pero a Kotlin no parece gustarle que intente llamar al método del punto final en la interfaz sin el parámetro de callback. Aquí está todo el código relevante.

La class de datos:

 data class GitHubRepo(val id:Int,val name:String) 

La interfaz:

 interface GitHubClient { @GET("/users/{user}/repos") fun reposForUser(@Path("user") user: String,callback: Callback<List<GitHubRepo>> ) } 

Implementación de reacondicionamiento:

  val httpClient = OkHttpClient.Builder() val builder = Retrofit.Builder().baseUrl(API_BASE_URL) .addConverterFactory(GsonConverterFactory.create()) val retrofit = builder.client(httpClient.build()).build() val client = retrofit.create(GitHubClient::class.java) val call = client.reposForUser("fs-opensource") <-- Error - No value passed for parameter 'callback' 

Del tutorial:

No pasa su callback como el último parámetro. Utiliza el cliente para get un object de llamada. Una vez que haya invocado .enqueue en el object de llamada creado, la request se realizará mediante Retrofit.

¿Cómo implemento esto en Kotlin?

El método reposForUser espera dos arguments: una String y una Callback , pero solo está proporcionando la String :

  client.reposForUser("fs-opensource") 

Puede hacer que su callback sea "opcional" al hacer esto:

 fun reposForUser(@Path("user") user: String, callback: Callback<List<GitHubRepo>>? ) 

He agregado un signo de interrogación detrás del tipo de callback para decir: Es un parámetro que admite nulos . Si incluso quiere decir que no hay callback por defecto , lo que también hace que la llamada del cliente sea más conveniente, le sugiero que proporcione un valor pnetworkingeterminado para la callback de callback , de esta manera:

 fun reposForUser(@Path("user") user: String, callback: Callback<List<GitHubRepo>>? = null) 

Tenga en count que necesita acceder a la callback de callback de forma segura ahora, porque podría ser nula. Lea aquí .

  • OnErrorNotImplementedException utilizando RxJava2 y Retrofit2 Mosby MVI
  • Pass facebook AccessToken por Retrofit
  • ¿Cómo get respuesta en la retroadaptación al usar rxAndroid?
  • Retrofit API call: ¿Cómo asegurarse de que el valor no sea nulo después de realizar una llamada de API?
  • ¿Cómo usar types personalizados para los parameters de Retrofit @Query?
  • Problemas para get API de Meetup Token de acceso con modificación - Android
  • ¿Cómo puedo usar RetroFit2 responseBodyConverter en Kotlin?
  • Los parameters generics Cualquiera de kotlin se convierte en comodines (?)
  • RxJava y Retrofit usando Kotlin
  • Retrofit2 + SimpleXML en Kotlin: MethodException: la anotación debe marcar un set o método get
  • ¿Cómo saltarse los models proguard utilizados por retrofit2 que está en el package base?