Add dividendOfRange parameter to FunctionSlider and related components for improved range handling

This commit is contained in:
Faris Armoush
2025-04-13 10:09:39 +03:00
parent 828db5d5e4
commit 60a1a9ad6f
4 changed files with 41 additions and 7 deletions

View File

@ -2,25 +2,34 @@ import 'package:flutter/material.dart';
class FunctionSlider extends StatelessWidget {
final dynamic initialValue;
final (double min, double max) range;
final void Function(double value) onChanged;
final double dividendOfRange;
const FunctionSlider({
required this.onChanged,
required this.initialValue,
required this.range,
required this.dividendOfRange,
super.key,
});
@override
Widget build(BuildContext context) {
final (min, max) = range;
final bool isValidRange = max > min;
final double value = initialValue is int
? (initialValue as int).toDouble()
: (initialValue as double);
final int? divisions = isValidRange ? ((max - min) / dividendOfRange).round() : null;
return Slider(
value: initialValue is int ? initialValue.toDouble() : range.$1,
min: range.$1,
max: range.$2,
divisions: (range.$2 - range.$1).toInt(),
onChanged: onChanged,
value: value.clamp(min, max),
min: min,
max: max,
divisions: divisions,
onChanged: isValidRange ? onChanged : null,
);
}
}