I've got this weird crash
Fatal Exception: java.lang.IllegalStateException
You must call layoutWithConstraints first
androidx.compose.foundation.text.modifiers.MultiParagraphLayoutCache.getTextLayoutResult (MultiParagraphLayoutCache.kt:118)
androidx.compose.foundation.text.modifiers.TextAnnotatedStringNode.draw (TextAnnotatedStringNode.kt:489)
androidx.compose.ui.node.LayoutNodeDrawScope.drawDirect-x_KDEd0$ui_release (LayoutNodeDrawScope.kt:105)
androidx.compose.ui.node.LayoutNodeDrawScope.draw-x_KDEd0$ui_release (LayoutNodeDrawScope.kt:86)
androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers (NodeCoordinator.kt:365)
androidx.compose.ui.node.NodeCoordinator.draw (NodeCoordinator.kt:354)
androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw (LayoutModifierNodeCoordinator.kt:182)
androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers (NodeCoordinator.kt:362)
androidx.compose.ui.node.NodeCoordinator.access$drawContainedDrawModifiers (NodeCoordinator.kt:54)
androidx.compose.ui.node.NodeCoordinator$invoke$1.invoke (NodeCoordinator.kt:384)
androidx.compose.ui.node.NodeCoordinator$invoke$1.invoke (NodeCoordinator.kt:383)
androidx.compose.runtime.snapshots.Snapshot$Companion.observe (Snapshot.kt:2303)
androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe (SnapshotStateObserver.kt:473)
androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads (SnapshotStateObserver.kt:230)
androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release (OwnerSnapshotObserver.kt:133)
androidx.compose.ui.node.NodeCoordinator.invoke (NodeCoordinator.kt:383)
androidx.compose.ui.node.NodeCoordinator.invoke (NodeCoordinator.kt:54)
androidx.compose.ui.platform.RenderNodeApi29.record (RenderNodeApi29.android.kt:209)
androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (RenderNodeLayer.android.kt:304)
androidx.compose.ui.platform.AndroidComposeView.dispatchDraw (AndroidComposeView.android.kt:1167)
android.view.View.draw (View.java:22957)
android.view.View.updateDisplayListIfDirty (View.java:21789)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4606)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4579)
android.view.View.updateDisplayListIfDirty (View.java:21740)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4606)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4579)
android.view.View.updateDisplayListIfDirty (View.java:21740)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4606)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4579)
android.view.View.updateDisplayListIfDirty (View.java:21740)
android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:4606)
android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:4579)
android.view.View.updateDisplayListIfDirty (View.java:21740)
android.view.ThreadedRenderer.updateViewTreeDisplayList (ThreadedRenderer.java:561)
android.view.ThreadedRenderer.updateRootDisplayList (ThreadedRenderer.java:567)
android.view.ThreadedRenderer.draw (ThreadedRenderer.java:673)
android.view.ViewRootImpl.draw (ViewRootImpl.java:4905)
android.view.ViewRootImpl.performDraw (ViewRootImpl.java:4620)
android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:3749)
android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:2428)
android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:9437)
android.view.Choreographer$CallbackRecord.run (Choreographer.java:1228)
android.view.Choreographer.doCallbacks (Choreographer.java:1012)
android.view.Choreographer.doFrame (Choreographer.java:922)
android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1213)
android.os.Handler.handleCallback (Handler.java:938)
android.os.Handler.dispatchMessage (Handler.java:99)
android.os.Looper.loopOnce (Looper.java:233)
android.os.Looper.loop (Looper.java:334)
android.app.ActivityThread.main (ActivityThread.java:8513)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:582)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1068)
There is a bug in the 1.6.0 Alpha libraries effecting Text
Composables in material3
.
A workaround is to use the BasicText
composable or downgrade to the stable Compose version 1.5.0
.
In my case I found a dependency that was forcing the use of 1.6 Alpha libraries, after downgrading that dependency the issue was fixed.
You can check your dependency graph for any dependency that forces the alpha version of Compose, using ./gradlew -q dependencies