Skip to content

enolcasielles/non-linear-slider

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

non_linear_slider

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.

Example

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.

example

Usage

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())
            ],
          ),
        ),
      ),
    );
  }
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages