Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

como retorno apenas a o corpo de resposta para reutilizar?

fun retornaVendaApi(): List<Venda>? {
        val execute = RetrofitCall().retrofit().getVendas("Bearer $token").execute()
        return execute.body()

    }

a ideia deste metodo é retornar apenas a lista de vendas da api para utiliza-la em outros lugares da app, porem este metodo da erro de mainthread, como faço isso corretamente?

3 respostas

Oi Cicero, tudo bem ?

Cara você precisa fazer com que esse método rode de maneira assíncrona, ou seja, invés de rodar o execute, vai precisar rodar o enqueue, só que por ser assíncrono, você vai precisar obter o callback, acredito que se você colocar um high order function como parâmetro do seu método, solucione o problema para todas as chamadas.

Procurei sobre high order function, mas achei meio complexo, usar o courotines seria mais viável?

solução!

Fala Cicero,

cara, rola sim usar coroutines nesse seu caso, inclusive o retrofit já está preparado para tal coisa, você precisar mudar um pouquinho o jeito que faz, mas rolaria.

Unica coisa que talvez tenha problema vai ser em invocar a coroutina, você vai precisar estar dentro de um escopo que possa fazer o iniciamento, embora acredito que tu consiga resolver isso de boa :)

Outro detalhe super importante, indico que tu faça o curso da plataforma sobre arquitetura e tals, vai te ajudar a entender alguns conceitos e questão de separação de responsabilidades :)