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 {
  _HomePageState createState() => _HomePageState();

class _HomePageState extends State<HomePage> {
  double value = 3000;

  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
                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,