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?startKoinniekada nepasileidžia, ir pirmaskoinViewModel()iškart nulūžta:org.koin.core.error.KoinApplicationNotStartedException: KoinApplication has not been startedSimptomas apgaulingas — atrodo, kad kalta Koin konfigūracija, o iš tikrųjų
Applicationklasė net nebuvo paleista. Visada patikrink manifestą pirma.