Reputation: 1800
I am trying to use Koin to inject my viewModel (which has some dependencies as well) like this:
@Composable
fun Navigator(vm: MainActivityViewModel, modifier: Modifier = Modifier){
val navController = rememberNavController()
val navStackEntry by navController.currentBackStackEntryAsState()
val currRoute = navStackEntry?.destination?.route ?: ""
val currRouteArgs = navStackEntry?.arguments ?: Bundle()
val teamBuilderVm = getViewModel<TeamBuilderViewModel>() // Unresolved reference: getViewModel
}
I don't understand why it cannot find getViewModel when I have the following import:
import org.koin.android.ext.koin.adnroidContext
import org.koin.android.ext.koin.androidLogger
import org.koin.android.ext.koin.adnroidContext
import org.koin.androidx.viewmodel.ext.android.getViewModel
I am using this Koin version:
implementation "io.insert-koin:koin-android:$koin_version"
where
$koin_version = '3.2.0-beta-1'
Any thoughts why my import is ignored here?
Upvotes: 15
Views: 13930
Reputation: 825
If you are using koin 3.5.6 and above, implement this library io.insert-koin:koin-compose-viewmodel
Upvotes: 0
Reputation: 4505
Here's how I did it in koin 3.3.2
@Composable
fun HomeScreen(viewModel: PokemonViewModel = koinViewModel()) {
}
I also added koin-core
to build.gradle(:app)
def koin_version = '3.3.2'
implementation "io.insert-koin:koin-core:$koin_version"
implementation "io.insert-koin:koin-android:$koin_version"
implementation 'io.insert-koin:koin-androidx-compose:3.4.1'
Upvotes: 8
Reputation: 87774
You're using a wrong import, you should use:
import org.koin.androidx.compose.getViewModel
To use it you need the following dependency:
implementation("io.insert-koin:koin-androidx-compose:$koinVersion")
Upvotes: 19