Migrate Slider to the SliderState API

material3 1.5.0-alpha28 removed the value-based Slider overload that accepts custom thumb and track.
Keep the public signature of our wrapper and remember a SliderState internally,
as the deprecated material3 overload does.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benoit Marty
2026-09-29 18:12:47 +02:00
parent b591fbe0cd
commit f92b0a6c29
@@ -18,6 +18,7 @@ import androidx.compose.foundation.layout.height
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.SliderColors
import androidx.compose.material3.SliderDefaults
import androidx.compose.material3.SliderState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
@@ -60,16 +61,16 @@ fun Slider(
}
}
}
val sliderState = remember(steps, valueRange) { SliderState(value = value, steps = steps, trackRange = valueRange) }
sliderState.value = value
androidx.compose.material3.Slider(
value = value,
state = sliderState,
onValueChange = onValueChange,
modifier = modifier,
enabled = enabled,
valueRange = valueRange,
steps = steps,
onValueChangeFinished = onValueChangeFinish,
colors = colors,
thumb = {
thumb = { _ ->
if (useCustomLayout) {
SliderDefaults.Thumb(
modifier = Modifier.drawWithContent {