У меня есть приложение в виде одного действия и нескольких фрагментов с использованием компонента навигации.
Я использую Koin для моего DI. Я хотел создать класс Navigator в своем приложении в соответствии с постулатами чистой архитектуры.
Этот гипотетический класс будет выглядеть так:
class Navigator(private val navHostFragment: NavHostFragment)
{
fun toStudentsProfile():Unit
{
val action = HomeFragmentDirections.toStudentsProfile()
navHostFragment.findNavController().navigate(action)
}
fun toTeachersProfile():Unit
{
val action = HomeFragmentDirections.toTeachersProfile()
navHostFragment.findNavController().navigate(action)
}
}
Моя проблема сейчас в том, как мне создать это в контейнере Koin?
val platformModule = module {
single { Navigator("WHAT CAN BE DONE HERE") }
single { Session(get()) }
single { CoroutineScope(Dispatchers.IO + Job()) }
}
Более того, компонент Koin будет готов еще до того, как будет готов navhostfragment, поэтому он не сможет удовлетворить зависимость, для начала.
Есть ли способ предоставить Коину экземпляр класса и затем впоследствии начать его использовать?