Koin 2.0 с концепцией Nested-Scope или SubComponent - PullRequest
1 голос
/ 24 сентября 2019

Есть ли способ реализовать концепцию Dagger SubCompoent на Koin?

Я хочу использовать экземпляр из родительской области видимости.

app_modules.kt

val favoriteModule = module {
    scope(named<FavoriteFragment>()) {
        scoped { GetFavoriteMovies(get()) }
        scoped { FavoriteVMFactory(get(), get()) } // This need 'MovieEntityMovieMapper'
    }
}

val popularModule = module {
    scope(named<PopularFragment>()) {
        scoped { GetPopularMovies(get()) }
        scoped { PopularVMFactory(get(), get()) } // This need 'MovieEntityMovieMapper'
    }
}

val searchModule = module {
    scope(named<SearchFragment>()) {
        scoped { SearchMovies(get()) }
        scoped { SearchVMFactory(get(), get()) } // This need 'MovieEntityMovieMapper'
    }
}

val mainModule = module {
    scope(named<MainActivity>()) {
        scoped { MovieEntityMovieMapper() }
        // this ImageLoader also injected by Fragments
        scoped<ImageLoader> { (activity: Activity) -> GlideImageLoader(activity) }
    }
}

Используя Dagger, это можно сделать с помощью SubComponent или Component Dependency.

Но в Коине (особенно 2.0) я не могу найти способ.

В некоторых ответах сказано, что использовать GlobalContext.get().koin.getScope("Parent").get<>().

https://github.com/InsertKoinIO/koin/issues/513

Обмен экземплярами Koin между модулями

но я не думаю, что это не чистый подход и внедрение зависимостей.

...