adrielcafe / voyager

🛸 A pragmatic navigation library for Jetpack Compose
https://voyager.adriel.cafe
MIT License
2.38k stars 115 forks source link

CompositionLocal LocalLifecycleOwner not present #431

Open JosephSanjaya opened 1 month ago

JosephSanjaya commented 1 month ago

Library Versions

1.0.0

Android Lifecycle Version: 2.8.0

Issue Details

There's crash occured when updating lifecycle library to 2.8.0, on LocalLifecycleOwner

java.lang.IllegalStateException: CompositionLocal LocalLifecycleOwner not present
                                                                                                        at androidx.lifecycle.compose.LocalLifecycleOwnerKt$LocalLifecycleOwner$1.invoke(LocalLifecycleOwner.kt:26)
                                                                                                        at androidx.lifecycle.compose.LocalLifecycleOwnerKt$LocalLifecycleOwner$1.invoke(LocalLifecycleOwner.kt:25)
                                                                                                        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
                                                                                                        at androidx.compose.runtime.LazyValueHolder.getCurrent(ValueHolders.kt:29)
                                                                                                        at androidx.compose.runtime.LazyValueHolder.getValue(ValueHolders.kt:31)
                                                                                                        at androidx.compose.runtime.CompositionLocalMapKt.read(CompositionLocalMap.kt:90)
                                                                                                        at androidx.compose.runtime.ComposerImpl.consume(Composer.kt:2135)
                                                                                                        at androidx.lifecycle.compose.FlowExtKt.collectAsStateWithLifecycle(FlowExt.kt:182)
                                                                                                        at com.logixmates.snuffle.auth.presentation.login.LoginScreen.Content(LoginScreen.kt:58)
                                                                                                        at cafe.adriel.voyager.transitions.ComposableSingletons$SlideTransitionKt$lambda-1$1.invoke(SlideTransition.kt:27)
                                                                                                        at cafe.adriel.voyager.transitions.ComposableSingletons$SlideTransitionKt$lambda-1$1.invoke(SlideTransition.kt:27)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:139)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at cafe.adriel.voyager.transitions.ScreenTransitionKt$ScreenTransition$3$1.invoke(ScreenTransition.kt:49)
                                                                                                        at cafe.adriel.voyager.transitions.ScreenTransitionKt$ScreenTransition$3$1.invoke(ScreenTransition.kt:48)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:248)
                                                                                                        at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:84)
                                                                                                        at cafe.adriel.voyager.navigator.Navigator$saveableState$2.invoke(Navigator.kt:150)
                                                                                                        at cafe.adriel.voyager.navigator.Navigator$saveableState$2.invoke(Navigator.kt:149)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.MultipleScreenLifecycleOwnerUtilKt$RecursiveProvideBeforeScreenContent$4.invoke(multipleScreenLifecycleOwnerUtil.kt:57)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.MultipleScreenLifecycleOwnerUtilKt$RecursiveProvideBeforeScreenContent$4.invoke(multipleScreenLifecycleOwnerUtil.kt:56)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at cafe.adriel.voyager.androidx.AndroidScreenLifecycleOwner$ProvideBeforeScreenContent$1$1.invoke(AndroidScreenLifecycleOwner.kt:122)
                                                                                                        at cafe.adriel.voyager.androidx.AndroidScreenLifecycleOwner$ProvideBeforeScreenContent$1$1.invoke(AndroidScreenLifecycleOwner.kt:121)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
                                                                                                        at cafe.adriel.voyager.androidx.AndroidScreenLifecycleOwner$ProvideBeforeScreenContent$1.invoke(AndroidScreenLifecycleOwner.kt:121)
                                                                                                        at cafe.adriel.voyager.androidx.AndroidScreenLifecycleOwner$ProvideBeforeScreenContent$1.invoke(AndroidScreenLifecycleOwner.kt:116)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:248)
                                                                                                        at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:84)
2024-05-26 00:33:12.547 20658-20658 AndroidRuntime          com.logixmates.sniffle               E      at cafe.adriel.voyager.navigator.Navigator.saveableState$provideSaveableState(Navigator.kt:137) (Ask Gemini)
                                                                                                        at cafe.adriel.voyager.navigator.Navigator.access$saveableState$provideSaveableState(Navigator.kt:105)
                                                                                                        at cafe.adriel.voyager.navigator.Navigator$saveableState$1.invoke(Navigator.kt:148)
                                                                                                        at cafe.adriel.voyager.navigator.Navigator$saveableState$1.invoke(Navigator.kt:148)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:139)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.MultipleScreenLifecycleOwnerUtilKt$RecursiveProvideBeforeScreenContent$3.invoke(multipleScreenLifecycleOwnerUtil.kt:54)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.MultipleScreenLifecycleOwnerUtilKt$RecursiveProvideBeforeScreenContent$3.invoke(multipleScreenLifecycleOwnerUtil.kt:53)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:139)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at cafe.adriel.voyager.androidx.AndroidScreenLifecycleOwner.ProvideBeforeScreenContent(AndroidScreenLifecycleOwner.kt:116)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.MultipleScreenLifecycleOwnerUtilKt.RecursiveProvideBeforeScreenContent(multipleScreenLifecycleOwnerUtil.kt:52)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.MultipleScreenLifecycleOwnerUtilKt.access$RecursiveProvideBeforeScreenContent(multipleScreenLifecycleOwnerUtil.kt:1)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.MultipleScreenLifecycleOwnerUtilKt$RecursiveProvideBeforeScreenContent$recursiveContent$1.invoke(multipleScreenLifecycleOwnerUtil.kt:37)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.MultipleScreenLifecycleOwnerUtilKt$RecursiveProvideBeforeScreenContent$recursiveContent$1.invoke(multipleScreenLifecycleOwnerUtil.kt:36)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.MultipleScreenLifecycleOwnerUtilKt$RecursiveProvideBeforeScreenContent$2.invoke(multipleScreenLifecycleOwnerUtil.kt:49)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.MultipleScreenLifecycleOwnerUtilKt$RecursiveProvideBeforeScreenContent$2.invoke(multipleScreenLifecycleOwnerUtil.kt:48)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.ScreenLifecycleContentProvider$DefaultImpls.ProvideBeforeScreenContent(ScreenLifecycleOwner.kt:19)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.ScreenLifecycleOwner$DefaultImpls.ProvideBeforeScreenContent(ScreenLifecycleOwner.kt:7)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.DefaultScreenLifecycleOwner.ProvideBeforeScreenContent(ScreenLifecycleOwner.kt:29)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.MultipleScreenLifecycleOwnerUtilKt.RecursiveProvideBeforeScreenContent(multipleScreenLifecycleOwnerUtil.kt:44)
                                                                                                        at cafe.adriel.voyager.core.lifecycle.MultipleScreenLifecycleOwnerUtilKt.MultipleProvideBeforeScreenContent(multipleScreenLifecycleOwnerUtil.kt:16)
                                                                                                        at cafe.adriel.voyager.navigator.Navigator.saveableState(Navigator.kt:146)
                                                                                                        at cafe.adriel.voyager.transitions.ScreenTransitionKt$ScreenTransition$3.invoke(ScreenTransition.kt:48)
                                                                                                        at cafe.adriel.voyager.transitions.ScreenTransitionKt$ScreenTransition$3.invoke(ScreenTransition.kt:47)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:139)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1$5.invoke(AnimatedContent.kt:755)
                                                                                                        at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1$5.invoke(AnimatedContent.kt:744)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:118)
2024-05-26 00:33:12.548 20658-20658 AndroidRuntime          com.logixmates.sniffle               E      at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) (Ask Gemini)
                                                                                                        at androidx.compose.animation.AnimatedVisibilityKt.AnimatedEnterExitImpl(AnimatedVisibility.kt:818)
                                                                                                        at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1.invoke(AnimatedContent.kt:726)
                                                                                                        at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1.invoke(AnimatedContent.kt:709)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at androidx.compose.animation.AnimatedContentKt.AnimatedContent(AnimatedContent.kt:768)
                                                                                                        at androidx.compose.animation.AnimatedContentKt.AnimatedContent(AnimatedContent.kt:141)
                                                                                                        at cafe.adriel.voyager.transitions.ScreenTransitionKt.ScreenTransition(ScreenTransition.kt:43)
                                                                                                        at cafe.adriel.voyager.transitions.SlideTransitionKt.SlideTransition(SlideTransition.kt:29)
                                                                                                        at com.logixmates.snuffle.core.presentation.ComposableSingletons$SnuffleActivityKt$lambda-1$1.invoke(SnuffleActivity.kt:28)
                                                                                                        at com.logixmates.snuffle.core.presentation.ComposableSingletons$SnuffleActivityKt$lambda-1$1.invoke(SnuffleActivity.kt:27)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:118)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at cafe.adriel.voyager.navigator.NavigatorKt$Navigator$6$1.invoke(Navigator.kt:98)
                                                                                                        at cafe.adriel.voyager.navigator.NavigatorKt$Navigator$6$1.invoke(Navigator.kt:91)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
                                                                                                        at cafe.adriel.voyager.navigator.NavigatorKt$Navigator$6.invoke(Navigator.kt:89)
                                                                                                        at cafe.adriel.voyager.navigator.NavigatorKt$Navigator$6.invoke(Navigator.kt:82)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
                                                                                                        at cafe.adriel.voyager.navigator.NavigatorKt.Navigator(Navigator.kt:80)
                                                                                                        at cafe.adriel.voyager.navigator.NavigatorKt.Navigator(Navigator.kt:60)
                                                                                                        at com.logixmates.snuffle.core.presentation.SnuffleActivity$onCreate$1.invoke(SnuffleActivity.kt:27)
                                                                                                        at com.logixmates.snuffle.core.presentation.SnuffleActivity$onCreate$1.invoke(SnuffleActivity.kt:25)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at androidx.compose.ui.platform.ComposeView.Content(ComposeView.android.kt:428)
                                                                                                        at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:252)
                                                                                                        at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:251)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
                                                                                                        at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(CompositionLocals.kt:186)
                                                                                                        at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:119)
                                                                                                        at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:118)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
2024-05-26 00:33:12.551 20658-20658 AndroidRuntime          com.logixmates.sniffle               E      at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) (Ask Gemini)
                                                                                                        at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
                                                                                                        at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.ProvideAndroidCompositionLocals(AndroidCompositionLocals.android.kt:110)
                                                                                                        at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$2.invoke(Wrapper.android.kt:139)
                                                                                                        at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$2.invoke(Wrapper.android.kt:138)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:248)
                                                                                                        at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:138)
                                                                                                        at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:123)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        at androidx.compose.runtime.ActualJvm_jvmKt.invokeComposable(ActualJvm.jvm.kt:90)
                                                                                                        at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3302)
                                                                                                        at androidx.compose.runtime.ComposerImpl.composeContent$runtime_release(Composer.kt:3235)
                                                                                                        at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:725)
                                                                                                        at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:1071)
                                                                                                        at androidx.compose.runtime.CompositionImpl.composeInitial(Composition.kt:633)
                                                                                                        at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:619)
                                                                                                        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:1289)
                                                                                                        at androidx.compose.ui.platform.WrappedComposition.setContent(Wrapper.android.kt:114)
                                                                                                        at androidx.compose.ui.platform.WrappedComposition.onStateChanged(Wrapper.android.kt:164)
                                                                                                        at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.jvm.kt:320)
                                                                                                        at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.jvm.kt:198)
                                                                                                        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:1364)
                                                                                                        at android.view.View.dispatchAttachedToWindow(View.java:20738)
                                                                                                        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3566)
                                                                                                        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3573)
                                                                                                        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3573)
                                                                                                        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3573)
                                                                                                        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3573)
                                                                                                        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2607)
                                                                                                        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2135)
                                                                                                        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8624)
                                                                                                        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:975)
                                                                                                        at android.view.Choreographer.doCallbacks(Choreographer.java:799)
                                                                                                        at android.view.Choreographer.doFrame(Choreographer.java:734)
                                                                                                        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:960)
                                                                                                        at android.os.Handler.handleCallback(Handler.java:938)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                        at android.os.Looper.loop(Looper.java:236)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8057)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
2024-05-26 00:33:12.551 20658-20658 AndroidRuntime          com.logixmates.sniffle               E      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:620)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011)
DFedonnikov commented 1 month ago

Still reproducible in 1.1.0-beta01

DFedonnikov commented 4 weeks ago

Looks like connected to this https://issuetracker.google.com/issues/336842920#comment8 https://stackoverflow.com/questions/78490378/java-lang-illegalstateexception-compositionlocal-locallifecycleowner-not-presen https://medium.com/@nematengg/solving-java-lang-illegalstateexception-compositionlocal-locallifecycleowner-not-present-bc5d469f0622