Estou criando um widget personalizado de widget deslizante onde existe uma função onChange
Não sei como passar esta função para um widget personalizado, pois ela possui argumentos
é fácil passar quando uma função não tem argumento
como
final VoidCallBack ontap;
class CustomSlider extends StatelessWidget {
final double value;
// how to pass voidcallback with argument here
const CustomSlider({Key? key,required this.value}) : super(key: key);
@override
Widget build(BuildContext context) {
return SfSlider.vertical(
min: 50,
max: 250.0,
value: value,
interval: 20,
showTicks: true,
showLabels: true,
enableTooltip: true,
minorTicksPerInterval: 1,
onChanged: (dynamic value) {
// how to deal with this function
},
);
}
}
Para passar uma função com argumentos para um widget personalizado no Flutter, você pode definir um tipo de função como um parâmetro em seu widget personalizado.
No seu caso, como a função onChanged recebe um valor dinâmico como argumento e retorna void, você pode defini-la da seguinte maneira em seu widget CustomSlider :
Agora, ao usar CustomSlider , você pode passar uma função para o parâmetro onChanged :
Neste exemplo, _sliderValue é uma variável de estado que é atualizada sempre que o valor do controle deslizante muda. A chamada setState garante que o widget seja reconstruído com o novo valor do controle deslizante. Observe que você pode querer ter certeza de que a função que você passa para onChanged espera um parâmetro do tipo que o Slider emitirá (provavelmente um double neste caso).
OU
se precisar de valor de volta: