John O'Reilly
06/09/2025, 10:42 AMKoinApplicationPreview
in 4.1.....should something like following work? I'm getting render issue as soon as I add the `koinViewModel`but I could be missing something else perhaps
@Preview
@Composable
fun PreviewPlayerListView() {
KoinApplicationPreview(application = { modules(appModule, commonModule(false)) }) {
SomeComposable()
}
}
@Composable
fun SomeComposable() {
val playerListViewModel = koinViewModel<PlayerListViewModel>()
Text("hey there")
}
John O'Reilly
06/09/2025, 10:43 AMFailed to instantiate a ViewModel
if I change to say
@Composable
fun SomeComposable() {
val repo = koinInject<FantasyPremierLeagueRepository>()
Text("hey there")
}
then the render issue shown is
Failed to instantiate Composition Local
arnaud.giuliani
06/09/2025, 1:06 PMkoinInject
here?John O'Reilly
06/09/2025, 1:07 PMkoinViewModel
in first caseJohn O'Reilly
06/09/2025, 1:09 PMJohn O'Reilly
06/09/2025, 1:16 PMPlayersListView.kt
John O'Reilly
06/09/2025, 1:16 PMJohn O'Reilly
06/09/2025, 1:17 PMarnaud.giuliani
06/09/2025, 1:44 PMJohn O'Reilly
06/09/2025, 1:45 PMJohn O'Reilly
06/09/2025, 1:45 PMarnaud.giuliani
06/09/2025, 2:03 PMarnaud.giuliani
06/09/2025, 2:03 PMJohn O'Reilly
06/09/2025, 2:03 PMarnaud.giuliani
06/09/2025, 3:23 PMJohn O'Reilly
06/09/2025, 3:43 PMJohn O'Reilly
06/09/2025, 7:13 PMJohn O'Reilly
06/09/2025, 7:31 PMMark
06/10/2025, 5:08 AMHelp / Show Log in Finder
?John O'Reilly
06/10/2025, 7:34 AMjava.lang.IllegalStateException: KoinApplication has not been started
at org.koin.core.context.GlobalContext.get(GlobalContext.kt:36)
at org.koin.core.component.KoinComponent$DefaultImpls.getKoin(KoinComponent.kt:33)
at dev.johnoreilly.common.data.repository.FantasyPremierLeagueRepository.getKoin(FantasyPremierLeagueRepository.kt:27)
arnaud.giuliani
06/10/2025, 1:16 PMJohn O'Reilly
06/10/2025, 1:16 PMarnaud.giuliani
06/10/2025, 1:18 PMFantasyPremierLeagueRepository
?John O'Reilly
06/10/2025, 1:25 PMKoinApplicationPreview
?John O'Reilly
06/10/2025, 1:25 PMJohn O'Reilly
06/10/2025, 1:26 PMKoinApplicationPreview
and KoinComponent
are trying to init koin?arnaud.giuliani
06/10/2025, 1:58 PMarnaud.giuliani
06/10/2025, 1:59 PMarnaud.giuliani
06/10/2025, 1:59 PMarnaud.giuliani
06/10/2025, 1:59 PMarnaud.giuliani
06/10/2025, 1:59 PMJohn O'Reilly
07/06/2025, 8:21 AMarnaud.giuliani
07/07/2025, 7:31 AMarnaud.giuliani
07/07/2025, 7:31 AMarnaud.giuliani
07/16/2025, 3:21 PMarnaud.giuliani
07/16/2025, 3:22 PMjava.lang.NullPointerException: Cannot invoke "java.io.File.getAbsolutePath()" because "dbFile" is null
at dev.johnoreilly.common.ActualKt.createRoomDatabase(actual.kt:24)
at dev.johnoreilly.common.ActualKt.platformModule$lambda$3$lambda$2(actual.kt:18)
at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:49)
at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46)
at org.koin.core.instance.SingleInstanceFactory.get$lambda$0(SingleInstanceFactory.kt:55)
at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:36)
at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:53)
at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:132)
at org.koin.core.resolution.CoreResolver.resolveFromRegistry(CoreResolver.kt:87)
at org.koin.core.resolution.CoreResolver.resolveFromContextOrNull(CoreResolver.kt:74)
at org.koin.core.resolution.CoreResolver.resolveFromContextOrNull$default(CoreResolver.kt:72)
at org.koin.core.resolution.CoreResolver.resolveFromContext(CoreResolver.kt:69)
at org.koin.core.scope.Scope.resolveFromContext(Scope.kt:319)
at org.koin.core.scope.Scope.stackParametersCall(Scope.kt:282)
at org.koin.core.scope.Scope.resolveInstance(Scope.kt:268)
at org.koin.core.scope.Scope.resolve(Scope.kt:241)
at org.koin.core.scope.Scope.get(Scope.kt:223)
at dev.johnoreilly.common.data.repository.FantasyPremierLeagueRepository$special$$inlined$inject$default$2.invoke(KoinComponent.kt:67)
at _layoutlib_._internal_.kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:83)
at dev.johnoreilly.common.data.repository.FantasyPremierLeagueRepository.getDatabase(FantasyPremierLeagueRepository.kt:29)
at dev.johnoreilly.common.data.repository.FantasyPremierLeagueRepository.getPlayers(FantasyPremierLeagueRepository.kt:122)
at dev.johnoreilly.common.viewmodel.PlayerListViewModel.<init>(PlayerListViewModel.kt:30)
at dev.johnoreilly.fantasypremierleague.di.AppModuleKt.appModule$lambda$4$lambda$0(AppModule.kt:11)
at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:49)
at org.koin.core.instance.FactoryInstanceFactory.get(FactoryInstanceFactory.kt:38)
at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:132)
at org.koin.core.resolution.CoreResolver.resolveFromRegistry(CoreResolver.kt:87)
at org.koin.core.resolution.CoreResolver.resolveFromContextOrNull(CoreResolver.kt:74)
at org.koin.core.resolution.CoreResolver.resolveFromContextOrNull$default(CoreResolver.kt:72)
at org.koin.core.resolution.CoreResolver.resolveFromContext(CoreResolver.kt:69)
at org.koin.core.scope.Scope.resolveFromContext(Scope.kt:319)
at org.koin.core.scope.Scope.stackParametersCall(Scope.kt:290)
at org.koin.core.scope.Scope.resolveInstance(Scope.kt:268)
at org.koin.core.scope.Scope.resolve(Scope.kt:241)
at org.koin.core.scope.Scope.getWithParameters(Scope.kt:232)
at org.koin.viewmodel.factory.KoinViewModelFactory.create(KoinViewModelFactory.kt:49)
at androidx.lifecycle.viewmodel.ViewModelProviderImpl_androidKt.createViewModel(ViewModelProviderImpl.android.kt:34)
at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release(ViewModelProviderImpl.kt:60)
at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release$default(ViewModelProviderImpl.kt:43)
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.android.kt:92)
at org.koin.viewmodel.GetViewModelKt.resolveViewModel(GetViewModel.kt:60)
at dev.johnoreilly.fantasypremierleague.presentation.players.PlayersListViewKt.SomeComposable(PlayersListView.kt:199)
at dev.johnoreilly.fantasypremierleague.presentation.players.ComposableSingletons$PlayersListViewKt$lambda$-291352630$1.invoke(PlayersListView.kt:50)
at dev.johnoreilly.fantasypremierleague.presentation.players.ComposableSingletons$PlayersListViewKt$lambda$-291352630$1.invoke(PlayersListView.kt:49)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:364)
at org.koin.compose.KoinApplicationKt.KoinMultiplatformApplication(KoinApplication.kt:142)
at dev.johnoreilly.fantasypremierleague.presentation.players.PlayersListViewKt.PreviewPlayerListView(PlayersListView.kt:49)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at androidx.compose.ui.tooling.ComposableInvoker.invokeComposableMethod(ComposableInvoker.jvm.kt:185)
at androidx.compose.ui.tooling.ComposableInvoker.invokeComposable(ComposableInvoker.jvm.kt:222)
at androidx.compose.ui.tooling.ComposeViewAdapter$init$3$1$composable$1$1.invoke(ComposeViewAdapter.android.kt:478)
at androidx.compose.ui.tooling.ComposeViewAdapter$init$3$1$composable$1$1.invoke(ComposeViewAdapter.android.kt:476)
at androidx.compose.ui.tooling.ComposeViewAdapter$init$3$1.invoke(ComposeViewAdapter.android.kt:519)
at androidx.compose.ui.tooling.ComposeViewAdapter$init$3$1.invoke(ComposeViewAdapter.android.kt:469)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:364)
at androidx.compose.ui.tooling.InspectableKt.Inspectable(Inspectable.android.kt:58)
at androidx.compose.ui.tooling.ComposeViewAdapter$WrapPreview$1.invoke(ComposeViewAdapter.android.kt:414)
at androidx.compose.ui.tooling.ComposeViewAdapter$WrapPreview$1.invoke(ComposeViewAdapter.android.kt:413)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:364)
at androidx.compose.ui.tooling.ComposeViewAdapter.WrapPreview(ComposeViewAdapter.android.kt:408)
at androidx.compose.ui.tooling.ComposeViewAdapter.access$WrapPreview(ComposeViewAdapter.android.kt:123)
at androidx.compose.ui.tooling.ComposeViewAdapter$init$3.invoke(ComposeViewAdapter.android.kt:469)
at androidx.compose.ui.tooling.ComposeViewAdapter$init$3.invoke(ComposeViewAdapter.android.kt:466)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.ui.platform.ComposeView.Content(ComposeView.android.kt:431)
at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:250)
at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:250)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:364)
at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(CompositionLocals.kt:216)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:122)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:364)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.ProvideAndroidCompositionLocals(AndroidCompositionLocals.android.kt:110)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$3.invoke(Wrapper.android.kt:140)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$3.invoke(Wrapper.android.kt:139)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:384)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:139)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:123)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.runtime.internal.Utils_jvmKt.invokeComposable(Utils.jvm.kt:27)
at androidx.compose.runtime.ComposerImpl.doCompose-aFTiNEg(Composer.kt:3694)
at androidx.compose.runtime.ComposerImpl.composeContent--ZbOJvo$runtime_release(Composer.kt:3616)
at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:792)
at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:1132)
at androidx.compose.runtime.CompositionImpl.composeInitial(Composition.kt:677)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:616)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:123)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:114)
at androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(AndroidComposeView.android.kt:1963)
at androidx.compose.ui.platform.WrappedComposition.setContent(Wrapper.android.kt:114)
at androidx.compose.ui.platform.WrappedComposition.onStateChanged(Wrapper.android.kt:168)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.jvm.kt:313)
at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.jvm.kt:191)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:121)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:114)
at androidx.compose.ui.platform.AndroidComposeView.onAttachedToWindow(AndroidComposeView.android.kt:2042)
at android.view.View.dispatchAttachedToWindow(View.java:23071)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3518)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3525)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3525)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3525)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3525)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3525)
at android.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:69)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:362)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:462)
at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:125)
at com.android.tools.rendering.RenderTask.createRenderSession(RenderTask.java:829)
at com.android.tools.rendering.RenderTask.lambda$inflate$7(RenderTask.java:977)
at com.android.tools.rendering.RenderExecutor.runAsyncActionWithTimeout$lambda$12(RenderExecutor.kt:217)
at com.android.tools.rendering.RenderExecutor$PriorityRunnable.run(RenderExecutor.kt:338)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
John O'Reilly
07/16/2025, 3:22 PMJohn O'Reilly
07/16/2025, 3:23 PMJohn O'Reilly
07/16/2025, 3:35 PMarnaud.giuliani
07/16/2025, 4:24 PM