mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 07:07:19 +00:00
36 lines
922 B
Dart
36 lines
922 B
Dart
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: value.clamp(min, max),
|
|
min: min,
|
|
max: max,
|
|
divisions: divisions,
|
|
onChanged: isValidRange ? onChanged : null,
|
|
);
|
|
}
|
|
}
|