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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With