Skip to content

Commit 4892b2e

Browse files
committed
fix crash
Exception java.lang.IllegalStateException: The offset was read before being initialized. Did you access the offset in a phase before layout, like effects or composition?
1 parent 34ab84e commit 4892b2e

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

app/src/main/java/org/listenbrainz/android/ui/screens/brainzplayer/BrainzPlayerBackDropScreen.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ import java.util.Locale
111111
import kotlin.math.absoluteValue
112112
import kotlin.math.max
113113

114+
@ExperimentalMaterialApi
115+
private fun BackdropScaffoldState.offsetOrZero(): Float =
116+
try { requireOffset() } catch (_: IllegalStateException) { 0f }
117+
114118
@ExperimentalMaterialApi
115119
@Composable
116120
fun BrainzPlayerBackDropScreen(
@@ -177,7 +181,7 @@ fun BrainzPlayerBackDropScreen(
177181
persistentAppBar = false,
178182
frontLayerContent = {
179183
LaunchedEffect(Unit) {
180-
val delta = backdropScaffoldState.requireOffset()
184+
val delta = backdropScaffoldState.offsetOrZero()
181185
maxDelta = max(delta, maxDelta)
182186
}
183187

@@ -209,7 +213,7 @@ fun BrainzPlayerBackDropScreen(
209213
.height(ListenBrainzTheme.sizes.brainzPlayerPeekHeight)
210214
.graphicsLayer {
211215
alpha =
212-
(backdropScaffoldState.requireOffset() / (maxDelta - headerHeight.toPx()))
216+
(backdropScaffoldState.offsetOrZero() / (maxDelta - headerHeight.toPx()))
213217
},
214218
songList = currentPlayableState.value.songs,
215219
backdropScaffoldState = backdropScaffoldState,
@@ -235,7 +239,7 @@ fun BrainzPlayerBackDropScreen(
235239
.fillMaxSize()
236240
.graphicsLayer {
237241
val value =
238-
(backdropScaffoldState.requireOffset() / (maxDelta - headerHeight.toPx()))
242+
(backdropScaffoldState.offsetOrZero() / (maxDelta - headerHeight.toPx()))
239243
alpha =
240244
if (value < 0.8f)
241245
(1f - value) * 0.25f else 0f
@@ -267,7 +271,7 @@ fun BrainzPlayerBackDropScreen(
267271
.height(ListenBrainzTheme.sizes.brainzPlayerPeekHeight)
268272
.graphicsLayer {
269273
alpha =
270-
(backdropScaffoldState.requireOffset() / (maxDelta - headerHeight.toPx()))
274+
(backdropScaffoldState.offsetOrZero() / (maxDelta - headerHeight.toPx()))
271275
}
272276
)
273277
}

0 commit comments

Comments
 (0)