non_linear_slider 0.0.1 icon indicating copy to clipboard operation
non_linear_slider: ^0.0.1 copied to clipboard

A Non Linear Slider for Flutter.

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())
            ],
          ),
        ),
      ),
    );
  }
}
8
likes
100
pub points
66%
popularity

Publisher

unverified uploader

A Non Linear Slider for Flutter.

Repository (GitHub)

Documentation

API reference

License

Icon for licenses.MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on non_linear_slider