Only update slider value after release

This commit is contained in:
Suphon Thanakornpakapong
2021-06-07 22:52:32 +07:00
parent 9ca2d92f8e
commit bcab3d7537
@@ -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)
)
}
}
}
}