fix: value offset X not sync to track width changed in Slider

This commit is contained in:
2024-01-18 23:09:09 +08:00
parent 4cc36e4749
commit 6dcf7475fd

View File

@@ -198,7 +198,9 @@ private fun SliderLayout(
val offsetXFromValue = (value.coerceIn(min, max) - min) / (max - min) * maxOffsetX val offsetXFromValue = (value.coerceIn(min, max) - min) / (max - min) * maxOffsetX
val steppedOffsetXFromValue = offsetXFromValue.withSteps() val steppedOffsetXFromValue = offsetXFromValue.withSteps()
var absOffsetX by remember { mutableStateOf(0f) } var absOffsetX by remember { mutableStateOf(0f) }
var offsetX by remember { mutableStateOf(steppedOffsetXFromValue) } var offsetX by remember { mutableStateOf(0f) }
// Needs update every time when [value] or [trackWidth] changed.
offsetX = steppedOffsetXFromValue
val animatedOffsetX by animateFloatAsState(offsetX) val animatedOffsetX by animateFloatAsState(offsetX)
val adoptedOffsetX = if (tapped && !dragging) animatedOffsetX else offsetX val adoptedOffsetX = if (tapped && !dragging) animatedOffsetX else offsetX