A Flutter package that provides a Non Linear Slider Widget. This is a custom
Slider that works equal than the native one but instead of defining only a min
and
a max
value, user will be able to define as many intervals as it wants. This way slider
will have zones where its value increase/decrease quicker or slower than others.
The next example shows a Non Linear Slider where 3 intervals have been defined.
- First interval goes from 10 to 100 taking a 25% of the slider.
- Second interval goes from 100 to 1000 and takes the next 50%.
- Last interval goes from 1000 to 10000.
Using this Widget is pretty easy. You can pass any parameter you would pass to
Slider
with only one exception. Instead of passing a min
and a max
values
you should pass a List
of NLSInterval
, representing every interval you want to
define (the package also implements this NLSInterval
class). Each interval has a
min
, a max
and a weight
. The weight
parameter represents the percent you
want this interval takes on the slider. The sum of the weights should be equal to 1.
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
double value = 3000;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
NonLinearSlider(
intervals: [
NLSInterval(10, 100, 0.25),
NLSInterval(100, 1000, 0.5),
NLSInterval(1000, 10000, 0.25),
],
value: value,
onChanged: (value) {
this.value = value;
setState(() {});
},
label: value.round().toString(),
divisions: 100,
),
Text(value.round().toString())
],
),
),
),
);
}
}