Viewmodel dependency injection with Koin

āđāļŠāļĢāđŒ
āļāļąāļ‡
  • āđ€āļœāļĒāđāļžāļĢāđˆāđ€āļĄāļ·āđˆāļ­ 11 āļ.āļ„. 2024
  • 💊In this Kotlin Pill we learn how to use functionalities from the Koin library to solve dependency injection in Android using Kotlin.
    The ViewModel is one of the most important components of MVVM architecture and the Android Jetpack. By default a ViewModel cannot receive dependencies via constructor. In a previous video we saw how to inject dependencies into a ViewModel by means of a custom Factory class.
    In this tutorial we'll learn how to use de Koin Library to simplify this process, with no need of a Factory class.
    The app used in the example is the Lib_Ghi prototype, a client for the Studio Ghibli API. The source code is available in myt github repository.
    🎎Chapter list
    00:00 Intro
    01:28 Adding dependencies
    01:58 Koin setup and initialiazation
    05:53 Instantiate the ViewModel in the Activity
    07:00 Viewmodel dependency injection using Koin
    10:31 Testing the app
    ðŸ’ŧ Github repo:
    github.com/chicorasia/bootcam...
    Use the commit `b9aa2cf` from branch `koin`.
    🎧
    Track: Split - KV [Audio Library Release]
    Music provided by Audio Library Plus
    Watch: â€Ē Split - KV | Free Back...
    Free Download / Stream: alplus.io/split
    #Kotlin​​​​​​ #Android​​​​​​ #Dev​​​​​​ #Tutorial​​​​​​ #MVVM #ViewModel #DependencyInjection​​​​ #Koin

āļ„āļ§āļēāļĄāļ„āļīāļ”āđ€āļŦāđ‡āļ™ • 12

  • @edsonmatos
    @edsonmatos 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Excelente! Muuuito Obrigado!

  • @venicioalmeida7667
    @venicioalmeida7667 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +1

    ParabÃĐns Chico!!
    Excelente conteÚdo e didÃĄtica incrível..

  • @thyagonevessilvestre1248
    @thyagonevessilvestre1248 3 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +1

    Muito bom, parabÃĐns pelo vídeo. HÃĄ pouco material em portuguÊs sobre Kotlin Android e MVVM, e com o Koin entÃĢo, fica mais difícil ainda encontrar. No seu vídeo a explicaçÃĢo foi muito clara, seu modo de explicar ÃĐ muito fÃĄcil de entender. Aprendi tudo que sei sobre Android na internet, e vou começar amanhÃĢ em uma empresa como Desenvolvedor Android JÚnior, e soube que no projeto ÃĐ usado Koin, jÃĄ me ajudou a ter uma boa noçÃĢo bÃĄsica de como funciona, embora tenham me dito que essa parte sÃĢo os seniores que implementam.

  • @javajaveiro6321
    @javajaveiro6321 3 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +2

    Esse canal ÃĐ muito bom.

  • @MarcusVinicius-jc2em
    @MarcusVinicius-jc2em 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Estudando e pesquisando informaçÃĩes... Obrigado por me ajudar e contribuir para o meu entendimento!

  • @ClaudioSilva-ol6yq
    @ClaudioSilva-ol6yq 3 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +2

    Show de bola

  • @celsoluizdeoliveira1643
    @celsoluizdeoliveira1643 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Gosto muito da forma que vc ensina...bem explicado. Gostaria de saber qual trilha aqui no youtube vc recomendaria para estudar kotlin/android para iniciantes?

  • @hianuyesperidiao5499
    @hianuyesperidiao5499 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Muito bom, parabÃĐns pelo trabalho vem ajudando bastante gente. Saberia como injetar uma interface de repository ao inves de uma classe(Repository) comum? Estou procurando alguns conteudos sobre isso mas nÃĢo achei nada muito entedivel ainda kk.

    • @ChicoRasia_CLabs
      @ChicoRasia_CLabs  2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

      OlÃĄ Hianuy, tudo bem? Obrigado pelo apoio, saber que o trabalho estÃĄ tendo impacto ÃĐ o maior incentivo para eu continuar produzindo. NÃĢo sei se entendi muito bem sua pergunta, mas nesse trecho do vídeo eu faço a injeçÃĢo de uma classe abstrata Database usando o Koin: th-cam.com/video/BVKYlepD0r0/w-d-xo.html Abs e bons estudos!

  • @low_samba
    @low_samba āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    quais as vantagens de usar o koin ao invÃĐs do hilt alÃĐm do tamanho da aplicaçÃĢo?

  • @jorgecandeias6583
    @jorgecandeias6583 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Boa noite chico
    No minuto 6:20 quando vocÊ implementa a linha:
    private val mViewMode: FilmListViewModel by viewModel()
    vocÊ pede pra escolher o terceiro import, o que tem clazz com 2 z.
    no meu projeto nÃĢo esta aparecendo essa opçÃĢo na hora dos imports, fui olhar o que tem no seu git e no repositÃģrio referente ( branch koin) A classe MainActivity jÃĄ estÃĄ bem diferente, provavelmente o que tem lÃĄ jÃĄ ÃĐ a versÃĢo final.
    VocÊ teria como informa qual exatamente ÃĐ o import que ÃĐ chamado para classe MainActivity quando se escolhe a terceira opçÃĢo ? a classe com 2 z ?
    Desde jÃĄ agradeço.

    • @jorgecandeias6583
      @jorgecandeias6583 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

      OlÃĄ Chico, eu resolvi, aparentemente o meu problema foi causado por importe errado no meu TreinoViewModel (OBS: o meu projeto nÃĢo ÃĐ o seu, ele lista uma serie de treinos), eu nÃĢo estava usando o import androidx.lifecycle.ViewModel e isso causou o problema mais na frente quando eu fui delegar a dependÊncia do TreinoViewModel para o Koin:
      private val mViewMode: TreinoViewModel by viewModel()
      Por outro lado, apesar de minha implementaçÃĢo ter funcionado perfeitamente, eu precisei implementar uma funçÃĢo sugerida pelo prÃģprio android estÚdio, dentro do meu fragmento:
      private operator fun Any.setValue(treinoFragment: TreinoFragment, property: KProperty, treinoViewModel: TreinoViewModel) {
      }
      NÃĢo sei se isso existe em seu projeto ou se foi necessÃĄrio por conta do fragmento, em todo o caso estou deixando comentado para o caso de alguÃĐm enfrentar a mesma dificuldade que eu.