Skip to content

Commit

Permalink
Merge pull request #119 from MohamedRejeb/0.5.x
Browse files Browse the repository at this point in the history
Fix rememberSheetState losing sheet state
  • Loading branch information
MohamedRejeb authored Jul 24, 2024
2 parents 4d7b697 + cc037ff commit 04d6d29
Showing 1 changed file with 26 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,49 @@ package com.mohamedrejeb.calf.ui.sheet
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.SheetValue
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.Stable
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.Saver
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.snapshotFlow
import kotlinx.coroutines.CancellationException

private class SheetValueHolder @OptIn(ExperimentalMaterial3Api::class) constructor(
var value: SheetValue
)

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun rememberAdaptiveSheetState(
skipPartiallyExpanded: Boolean = false,
confirmValueChange: (SheetValue) -> Boolean = { true },
): AdaptiveSheetState {
return rememberSaveable(
skipPartiallyExpanded, confirmValueChange,
val sheetValueHolder = remember {
SheetValueHolder(SheetValue.Hidden)
}

val state = rememberSaveable(
skipPartiallyExpanded,
confirmValueChange,
saver = AdaptiveSheetState.Saver(
skipPartiallyExpanded = skipPartiallyExpanded,
confirmValueChange = confirmValueChange
)
) {
AdaptiveSheetState(skipPartiallyExpanded, SheetValue.Hidden, confirmValueChange)
if (skipPartiallyExpanded && sheetValueHolder.value == SheetValue.PartiallyExpanded)
sheetValueHolder.value = SheetValue.Expanded

AdaptiveSheetState(skipPartiallyExpanded, sheetValueHolder.value, confirmValueChange)
}


LaunchedEffect(Unit) {
snapshotFlow { state.currentValue }
.collect { sheetValueHolder.value = it }
}

return state
}

@OptIn(ExperimentalMaterial3Api::class)
Expand Down

0 comments on commit 04d6d29

Please sign in to comment.