I'm refactoring my app with Hilt as dependency injection manager.
I have a constructor injectable class, with two parameters in the constructor. One of the parameters is a CoroutineDispatcher.
class SubscriptionsLocalDataSource @Inject constructor(
private val subscriptionsDao: SubscriptionsDao,
private val dispatcher: CoroutineDispatcher = Dispatchers.IO
) : SubscriptionsDataSource {
}
When I try to build the app I get a missing binding error, as below:
error: [Dagger/MissingBinding] kotlinx.coroutines.CoroutineDispatcher cannot be provided without an @Provides-annotated method. public abstract static class ApplicationC implements ApplicationComponent, ^ kotlinx.coroutines.CoroutineDispatcher is injected at com.anagramma.babacodashboard.data.subscriptions.local.SubscriptionsLocalDataSource(…, dispatcher) com.anagramma.babacodashboard.data.subscriptions.local.SubscriptionsLocalDataSource is injected at com.anagramma.babacodashboard.data.subscriptions.SubscriptionsRepositoryImpl(localDataSource, …) com.anagramma.babacodashboard.data.subscriptions.SubscriptionsRepositoryImpl is injected at com.anagramma.babacodashboard.di.SubscriptionsModule.bindSubscriptionsRepository(subscriptionsRepositoryImpl) javax.inject.Provider<com.anagramma.babacodashboard.data.subscriptions.SubscriptionsRepository> is injected at com.anagramma.babacodashboard.ui.orders.subscriptions.SubscriptionsViewModel_AssistedFactory(repository, …) com.anagramma.babacodashboard.ui.orders.subscriptions.SubscriptionsViewModel_AssistedFactory is injected at com.anagramma.babacodashboard.ui.orders.subscriptions.SubscriptionsViewModel_HiltModule.bind(factory) java.util.Map<java.lang.String,javax.inject.Provider<androidx.hilt.lifecycle.ViewModelAssistedFactory<? extends androidx.lifecycle.ViewModel>>> is injected at androidx.hilt.lifecycle.ViewModelFactoryModules.ActivityModule.provideFactory(…, viewModelFactories) @dagger.hilt.android.internal.lifecycle.DefaultActivityViewModelFactory java.util.Set<androidx.lifecycle.ViewModelProvider.Factory> is requested at dagger.hilt.android.internal.lifecycle.DefaultViewModelFactories.ActivityEntryPoint.getActivityViewModelFactory() [com.anagramma.babacodashboard.BabacoDashboardApplication_HiltComponents.ApplicationC → com.anagramma.babacodashboard.BabacoDashboardApplication_HiltComponents.ActivityRetainedC → com.anagramma.babacodashboard.BabacoDashboardApplication_HiltComponents.ActivityC] The following other entry points also depend on it: dagger.hilt.android.internal.lifecycle.DefaultViewModelFactories.FragmentEntryPoint.getFragmentViewModelFactory() [com.anagramma.babacodashboard.BabacoDashboardApplication_HiltComponents.ApplicationC → com.anagramma.babacodashboard.BabacoDashboardApplication_HiltComponents.ActivityRetainedC → com.anagramma.babacodashboard.BabacoDashboardApplication_HiltComponents.ActivityC → com.anagramma.babacodashboard.BabacoDashboardApplication_HiltComponents.FragmentC]
Am I missing some annotation on CoroutineDispatcher?