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í .

  • Readaptación con kotlin, incapaz de crear @Body
  • Android Retrofit Get Query codificado
  • Dagger2 no puede acceder a las anulaciones. javax.annotation.Nullable not found
  • ¿Cómo usar types personalizados para los parameters de Retrofit @Query?
  • Problemas para get API de Meetup Token de acceso con modificación - Android
  • Obteniendo respuesta HTML / JSON original por error con Retrofit 2 y Kotlin
  • Cómo crear el controller de respuesta genérica para el error y validar la respuesta utilizando retrofit, rxjava y dagger
  • reference no resuelta: callback
  • ¿Cómo usar Kotlin enum con Retrofit?
  • Problemas al analizar datos con RxJava + Kotlin
  • ¿Cómo crear una llamada asincrónica utilizando modificaciones y observaciones en Kotlin?