diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/SliderPreference.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/SliderPreference.kt index f89fdf5854..caabcce7e6 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/components/SliderPreference.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/components/SliderPreference.kt @@ -18,8 +18,7 @@ package app.lawnchair.ui.preferences.components import androidx.compose.foundation.layout.* import androidx.compose.material.* -import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp @@ -35,7 +34,15 @@ fun SliderPreference( steps: Int, showAsPercentage: Boolean = false, showDivider: Boolean = true -) = +) { + var adapterValue by adapter + var sliderValue by remember { mutableStateOf(adapterValue) } + + DisposableEffect(adapterValue) { + sliderValue = adapterValue + onDispose { } + } + PreferenceTemplate(height = 76.dp, showDivider = showDivider) { Column(modifier = Modifier.fillMaxHeight(), verticalArrangement = Arrangement.Center) { Spacer(modifier = Modifier.requiredHeight(2.dp)) @@ -66,8 +73,9 @@ fun SliderPreference( } Spacer(modifier = Modifier.requiredHeight(2.dp)) Slider( - value = adapter.state.value, - onValueChange = adapter::onChange, + value = sliderValue, + onValueChange = { newValue -> sliderValue = newValue }, + onValueChangeFinished = { adapterValue = sliderValue }, valueRange = valueRange, steps = steps, modifier = Modifier @@ -75,4 +83,5 @@ fun SliderPreference( .padding(start = 10.dp, end = 10.dp) ) } - } \ No newline at end of file + } +}