A Flutter plugin to handle number inputs with increment and decrement buttons.
In the pubspec.yaml of your flutter project, add the following dependency:
dependencies: ... quantity_input: ^1.0.2You 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.
| Attribute | Type | Required | Description | Default value |
|---|---|---|---|---|
| value | int/double | ✔️ | Has to be an int or double depending on QuantityInputType variable | |
| onChanged | Function(String) | ✔️ | Detects changes to the input and sends value through param | |
| step | int/double | ❌ | The value that is incremented or decremented each time the user presses a button | 1 |
| decimalDigits | int | ❌ | The number of decimal places that can be displayed for double input | 1 |
| minValue | int/double | ❌ | Set min value to be displayed in input | 1 |
| maxValue | int/double | ❌ | Set max value to be displayed in input | 100 |
| inputWidth | double | ❌ | The width of the textfield input | 80 |
| buttonColor | Color | ❌ | Sets color for increment and decrement buttons | Primary app color |
| iconColor | Color | ❌ | Sets color for icons inside increment and decrement buttons | Colors.white |
| label | String | ❌ | Sets label for input | |
| readOnly | bool | ❌ | Determines if the input will be readOnly | false |
| acceptsZero | bool | ❌ | If set to true, the input can accept the value 0 | false |
| acceptsNegatives | bool | ❌ | If set to true, the input can accept negative values | false |
| type | QuantityInputType | ❌ | Determines if the input will manage values as int or double | QuantityInputType.int |
| decoration | InputDecoration | ❌ | Sets custom InputDecoration to the widget TextFormField | |
| elevation | double | ❌ | Sets elevation to increment and decrement buttons | 5 |
If you encounter any issue you or want to leave a suggestion you can do it by filling an issue.

