Quantity Input

Buy Me A Pizza

A Flutter plugin to handle number inputs with increment and decrement buttons.

Preview

Preview

Usage

In the pubspec.yaml of your flutter project, add the following dependency:

dependencies:
  ...
  quantity_input: ^1.0.2

You can create a simple quantity input widget with the following example:

import 'package:flutter/material.dart';
import 'package:quantity_input/quantity_input.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int simpleIntInput = 0;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SafeArea(
        child: Scaffold(
          appBar: AppBar(
            title: Text('Example')
          ),
          body: Center(
            child: Column(  
              mainAxisSize: MainAxisSize.min,
              children: [
                QuantityInput(
                  value: simpleIntInput,
                  onChanged: (value) => setState(() => simpleIntInput = int.parse(value.replaceAll(',', '')))
                ),
                Text(
                  'Value: $simpleIntInput',
                  style: TextStyle(
                    color: Colors.black,
                    fontWeight: FontWeight.bold
                  )
                )
              ]
            )
          )
        )
      )
    );
  }
}

If the value returned by onChanged has tousand separators, it is recommended to remove the commas from String before parsing as shown in example before.

API

AttributeTypeRequiredDescriptionDefault value
valueint/double:heavy_check_mark:Has to be an int or double depending on QuantityInputType variable
onChangedFunction(String):heavy_check_mark:Detects changes to the input and sends value through param
stepint/double:x:The value that is incremented or decremented each time the user presses a button1
decimalDigitsint:x:The number of decimal places that can be displayed for double input1
minValueint/double:x:Set min value to be displayed in input1
maxValueint/double:x:Set max value to be displayed in input100
inputWidthdouble:x:The width of the textfield input80
buttonColorColor:x:Sets color for increment and decrement buttonsPrimary app color
iconColorColor:x:Sets color for icons inside increment and decrement buttonsColors.white
labelString:x:Sets label for input
readOnlybool:x:Determines if the input will be readOnlyfalse
acceptsZerobool:x:If set to true, the input can accept the value 0false
acceptsNegativesbool:x:If set to true, the input can accept negative valuesfalse
typeQuantityInputType:x:Determines if the input will manage values as int or doubleQuantityInputType.int
decorationInputDecoration:x:Sets custom InputDecoration to the widget TextFormField
elevationdouble:x:Sets elevation to increment and decrement buttons5

Issues & Suggestions

If you encounter any issue you or want to leave a suggestion you can do it by filling an issue.

Thank you for the support!

Libraries

icon-button.widget
quantity_input