Согласно этой записи , будет новая версия koin, предоставляющая некоторую функцию расширения для облегчения жизни. Следуйте указаниям после добавления этих функций расширения в качестве обходного пути, пока что это работает.
Но основная проблема заключается в том, что я пытаюсь поместить этот общий для приложений CacheProvider в качестве параметра в SomeFragmentUsedViewModel
. Это кажется невозможным для инъекций. Таким образом, поток данных должен быть:
- в модуле koin
viewModel { (handle: SavedStateHandle) -> CacheProvider(handle) }
viewModel { SomeFragmentUsedViewModel() }
В деятельности
private val cacheProvider: CacheProvider by stateViewModel {
parametersOf(
SavedStateHandle()
)
}
Повторно использовать его в SomeFragment
private val viewModel: SomeFragmentUsedViewModel by inject()
private val cacheProvider: CacheProvider by stateSharedViewModel()
Подача данных из
cacheProvider
в
viewModel
. Таким образом, фрагмент работает как мост между двумя ViewModels.
cacheProvider.data?.let { safeData ->
viewModel.initDataWith(safeData)
}