-
Notifications
You must be signed in to change notification settings - Fork 50
Open
Labels
Description
Hello, I'm getting crash reports from Android 9 users (API 28).
Fatal Exception: java.lang.NullPointerException:
at androidx.compose.ui.node.LayoutNodeDrawScope.drawContent(LayoutNodeDrawScope.kt:49)
at me.saket.telephoto.zoomable.ZoomablePeekOverlayKt$zoomablePeekOverlay$1$1.invoke(ZoomablePeekOverlay.kt:43)
at me.saket.telephoto.zoomable.ZoomablePeekOverlayKt$zoomablePeekOverlay$1$1.invoke(ZoomablePeekOverlay.kt:42)
at androidx.compose.ui.graphics.drawscope.DrawScope$record$1.invoke(DrawScope.java:1077)
at androidx.compose.ui.graphics.drawscope.DrawScope$record$1.invoke(DrawScope.java:941)
at androidx.compose.ui.graphics.layer.GraphicsLayer$clipDrawBlock$1.invoke(GraphicsLayer.java:71)
at androidx.compose.ui.graphics.layer.GraphicsLayer$clipDrawBlock$1.invoke(GraphicsLayer.java:66)
at androidx.compose.ui.graphics.layer.ViewLayer.dispatchDraw(GraphicsViewLayer.android.kt:592)
at android.view.View.draw(View.java:21884)
My minSdk is 24, and so far I got the crash reports from 9 users, so I guess it's specific to API 28.
It doesn't happen every time - I see in analytics they sometimes get through my main screen and then crash in detail (I use zoomablePeekOverlay in both, always). I didn't manage to replicate in emulator at all.
Affected phones: Galaxy S8, P20 Lite, Redmi Note 7, ...
Lib version 0.15.1.
Here's an example code where some users crash. The AsyncImage is Coil.
@Composable
fun HomeBanner(
imageUrl: String?,
modifier: Modifier = Modifier,
onClick: (() -> Unit)? = null,
onZoom: ((Boolean) -> Unit)? = null,
contentDescription: String? = null,
) {
val zoomablePeekOverlayState = rememberZoomablePeekOverlayState()
LaunchedEffect(zoomablePeekOverlayState.isZoomedIn) {
onZoom?.invoke(zoomablePeekOverlayState.isZoomedIn)
}
Surface(
color = Color.Transparent,
contentColor = MyTheme.colors.textStrong,
modifier = modifier,
) {
AsyncImage(
model = MyImageRequestBuilder(imageUrl = imageUrl).build(),
contentDescription = contentDescription,
contentScale = ContentScale.Crop,
modifier = Modifier
.zoomablePeekOverlay(state = zoomablePeekOverlayState)
.fillMaxWidth()
.aspectRatio(ratio = 335f / 176)
.imageInspectionBackground()
.thenIf(onClick != null) { Modifier.clickable(onClick = onClick!!) },
)
}
}Reactions are currently unavailable