androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap 的 NullPointerException

Abd*_*ved 5 android android-studio android-jetpack-compose

NullPointerException在 LazyColumn 中动态添加新项目时出现。根本原因是这个块androidx.compose.runtime.snapshots

private val readObserver: (Any) -> Unit = { state ->
        if (!isPaused) {
            synchronized(observedScopeMaps) {
                currentMap!!.recordRead(state)
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

还附上崩溃日志

15:14:27.247 AndroidRuntime        D  Shutting down VM
15:14:27.250 AndroidRuntime        E  FATAL EXCEPTION: main
                                      Process: com.sdsol.starfish.debug, PID: 3256
                                      java.lang.NullPointerException
                                        at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.recordRead(SnapshotStateObserver.kt:404)
                                        at androidx.compose.runtime.snapshots.SnapshotStateObserver$readObserver$1.invoke(SnapshotStateObserver.kt:164)
                                        at androidx.compose.runtime.snapshots.SnapshotStateObserver$readObserver$1.invoke(SnapshotStateObserver.kt:161)
                                        at androidx.compose.runtime.snapshots.SnapshotKt.readable(Snapshot.kt:1904)
                                        at androidx.compose.runtime.SnapshotMutableStateImpl.getValue(SnapshotState.kt:135)
                                        at androidx.compose.ui.graphics.vector.VectorPainter.getSize-NH-jbRc$ui_release(VectorPainter.kt:425)
                                        at androidx.compose.ui.graphics.vector.VectorPainter.getIntrinsicSize-NH-jbRc(VectorPainter.kt:253)
                                        at androidx.compose.ui.draw.PainterNode.draw(PainterModifier.kt:304)
                                        at androidx.compose.ui.node.LayoutNodeDrawScope.drawDirect-x_KDEd0$ui_release(LayoutNodeDrawScope.kt:105)
                                        at androidx.compose.ui.node.LayoutNodeDrawScope.draw-x_KDEd0$ui_release(LayoutNodeDrawScope.kt:86)
                                        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:365)
                                        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:354)
                                        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:182)
                                        at androidx.compose.ui.node.LayoutNodeDrawScope.drawContent(LayoutNodeDrawScope.kt:66)
                                        at androidx.compose.foundation.NoIndication$NoIndicationInstance.drawIndication(Indication.kt:136)
                                        at androidx.compose.foundation.IndicationModifier.draw(Indication.kt:183)
                                        at androidx.compose.ui.node.BackwardsCompatNode.draw(BackwardsCompatNode.kt:349)
                                        at androidx.compose.ui.node.LayoutNodeDrawScope.drawDirect-x_KDEd0$ui_release(LayoutNodeDrawScope.kt:105)
                                        at androidx.compose.ui.node.LayoutNodeDrawScope.draw-x_KDEd0$ui_release(LayoutNodeDrawScope.kt:86)
                                        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:365)
                                        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:354)
                                        at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:922)
                                        at androidx.compose.ui.node.InnerNodeCoordinator.performDraw(InnerNodeCoordinator.kt:174)
                                        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:362)
                                        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:354)
                                        at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:182)
                                        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:362)
                                        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:354)
                                        at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:922)
                                        at androidx.compose.ui.node.InnerNodeCoordinator.performDraw(InnerNodeCoordinator.kt:174)
                                        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:362)
                                        at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:354)
                                        at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:922)
                                        at androidx.compose.ui.node.InnerNodeCoordinator.performDraw(InnerNodeCoordinator.kt:174)
                                        at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:362)
                                        at androidx.compose.ui.node.NodeCoordinator.access$drawContainedDrawModifiers(NodeCoordinator.kt:54)
                                        at androidx.compose.ui.node.NodeCoordinator$invoke$1.invoke(NodeCoordinator.kt:384)
                                        at androidx.compose.ui.node.NodeCoordinator$invoke$1.invoke(NodeCoordinator.kt:383)
                                        at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303)
                                        at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
                                        at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
                                        at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
15:14:27.250 AndroidRuntime        E    at androidx.compose.ui.node.NodeCoordinator.invoke(NodeCoordinator.kt:383)
                                        at androidx.compose.ui.node.NodeCoordinator.invoke(NodeCoordinator.kt:54)
                                        at androidx.compose.ui.platform.RenderNodeApi29.record(RenderNodeApi29.android.kt:209)
                                        at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:304)
                                        at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:1167)
                                        at android.view.View.draw(View.java:24409)
                                        at android.view.View.updateDisplayListIfDirty(View.java:23267)
                                        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
                                        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
                                        at android.view.View.updateDisplayListIfDirty(View.java:23214)
                                        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
                                        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
                                        at android.view.View.updateDisplayListIfDirty(View.java:23214)
                                        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
                                        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
                                        at android.view.View.updateDisplayListIfDirty(View.java:23214)
                                        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
                                        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
                                        at android.view.View.updateDisplayListIfDirty(View.java:23214)
                                        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:777)
                                        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:783)
                                        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:881)
                                        at android.view.ViewRootImpl.draw(ViewRootImpl.java:5647)
                                        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:5330)
                                        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4486)
                                        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3116)
                                        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10885)
                                        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1301)
                                        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1309)
                                        at android.view.Choreographer.doCallbacks(Choreographer.java:923)
                                        at android.view.Choreographer.doFrame(Choreographer.java:852)
                                        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1283)
                                        at android.os.Handler.handleCallback(Handler.java:942)
                                        at android.os.Handler.dispatchMessage(Handler.java:99)
                                        at android.os.Looper.loopOnce(Looper.java:226)
                                        at android.os.Looper.loop(Looper.java:313)
                                        at android.app.ActivityThread.main(ActivityThread.java:8757)
                                        at java.lang.reflect.Method.invoke(Native Method)
                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
Run Code Online (Sandbox Code Playgroud)