Tema
/
Mobiliosios programėlės KOTLIN
Pamoka 6 / 14 Koin priklausomybių injekcija ~45 min

Sukurk PicaApplication.kt — startKoin

Moduliai aprašyti — dabar juos reikia paleisti. Tai daroma Application klasėje, kuri sukuriama vieną kartą, dar prieš pirmą ekraną. Kodo stulpelyje — PicaApplication.kt su startKoin { }.

Du žingsniai, kad tai suveiktų:

1. Užregistruok klasę AndroidManifest.xml (kitaip onCreate niekada nepasileis):

<application
    android:name=".PicaApplication"
    ... >

2. Pridėk Koin priklausomybes build.gradle.kts (stack-when-needed):

implementation(platform(libs.koin.bom))
implementation(libs.koin.android)
implementation(libs.koin.androidx.compose)   // koinViewModel()

Ir dabar — paskutinis rankinio jungimo pėdsakas dingsta. MenuScreen nebekuria grandinės; jis prašo ViewModel iš Koino:

// BUVO (5 pamoka):
val vm: MenuViewModel = viewModel { MenuViewModel(MenuRepository(Network.api)) }

// DABAR (Koin):
import org.koin.androidx.compose.koinViewModel
val vm: MenuViewModel = koinViewModel()

Ir ištrink object Network — jo nebereikia, jį pakeitė coreModule.

Patikrink. Paleisk programėlę su veikiančiu backendu. Meniu užsikrauna lygiai kaip 5 pamokoje — vartotojas nemato jokio skirtumo. Bet Logcat dabar rodo Koino inicijavimą, o object Network kode nebėra:

Logcat:  [Koin] started with X definitions
Ekrane:  tas pats picų sąrašas iš GET /menu

Spąstai. Pamiršai android:name=".PicaApplication" manifeste? startKoin niekada nepasileidžia, ir pirmas koinViewModel() iškart nulūžta:

org.koin.core.error.KoinApplicationNotStartedException:
KoinApplication has not been started

Simptomas apgaulingas — atrodo, kad kalta Koin konfigūracija, o iš tikrųjų Application klasė net nebuvo paleista. Visada patikrink manifestą pirma.