From 02b0877b7fc8c1c9069618f25b86c03e76f9a822 Mon Sep 17 00:00:00 2001 From: HM Tamim <43744334+hm-tamim@users.noreply.github.com> Date: Mon, 25 Mar 2024 05:58:54 +0600 Subject: [PATCH] Fix: BottomSheet closes when recomposing in iOS #330 (#362) --- .../navigator/bottomSheet/BottomSheetNavigator.kt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/voyager-bottom-sheet-navigator/src/commonMain/kotlin/cafe/adriel/voyager/navigator/bottomSheet/BottomSheetNavigator.kt b/voyager-bottom-sheet-navigator/src/commonMain/kotlin/cafe/adriel/voyager/navigator/bottomSheet/BottomSheetNavigator.kt index 91384caf..016a3da5 100644 --- a/voyager-bottom-sheet-navigator/src/commonMain/kotlin/cafe/adriel/voyager/navigator/bottomSheet/BottomSheetNavigator.kt +++ b/voyager-bottom-sheet-navigator/src/commonMain/kotlin/cafe/adriel/voyager/navigator/bottomSheet/BottomSheetNavigator.kt @@ -14,6 +14,7 @@ import androidx.compose.material.contentColorFor import androidx.compose.material.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.ProvidableCompositionLocal import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope @@ -59,16 +60,16 @@ public fun BottomSheetNavigator( val coroutineScope = rememberCoroutineScope() val sheetState = rememberModalBottomSheetState( initialValue = ModalBottomSheetValue.Hidden, - confirmValueChange = { state -> - if (state == ModalBottomSheetValue.Hidden) { - hideBottomSheet?.invoke() - } - true - }, skipHalfExpanded = skipHalfExpanded, animationSpec = animationSpec ) + LaunchedEffect(sheetState, sheetState.currentValue) { + if (sheetState.currentValue == ModalBottomSheetValue.Hidden) { + hideBottomSheet?.invoke() + } + } + Navigator(HiddenBottomSheetScreen, onBackPressed = null, key = key) { navigator -> val bottomSheetNavigator = remember(navigator, sheetState, coroutineScope) { BottomSheetNavigator(navigator, sheetState, coroutineScope)